| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | import com.alibaba.druid.sql.visitor.functions.If; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.huaweicloud.sdk.core.exception.SdkErrorMessage; |
| | | import com.stylefeng.guns.core.util.JwtTokenUtil; |
| | | import com.stylefeng.guns.core.util.MD5Util; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.dto.AddAppUserVo; |
| | | import com.stylefeng.guns.modular.system.dto.LoginWeChatDTO; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.model.Page; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import com.stylefeng.guns.modular.system.service.impl.FeedBackServiceImpl; |
| | | import com.stylefeng.guns.modular.system.service.impl.HouseTypeServiceImpl; |
| | | import com.stylefeng.guns.modular.system.util.HttpUtils; |
| | | import com.stylefeng.guns.modular.system.util.Page; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.req.*; |
| | | import com.stylefeng.guns.modular.system.warpper.res.AppletLoginRes; |
| | | import com.stylefeng.guns.modular.system.warpper.res.CollectRes; |
| | | import com.stylefeng.guns.modular.system.warpper.res.SearchIntermediaryRes; |
| | | import com.stylefeng.guns.modular.system.util.*; |
| | | import com.stylefeng.guns.modular.system.vo.ProtocolVO; |
| | | import com.stylefeng.guns.modular.system.vo.WXLoginVO; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.models.auth.In; |
| | | import net.bytebuddy.asm.Advice; |
| | | import org.apache.regexp.RE; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Qualifier; |
| | | import org.springframework.util.StringUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import javax.validation.constraints.Email; |
| | | import java.security.PrivilegedAction; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2023/11/7 11:07 |
| | | * @author 无关风月 |
| | | * @Date 2024/2/6 18:25 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("") |
| | | public class AppUserController { |
| | | |
| | | @Autowired |
| | | private IAppUserService appUserService; |
| | | @Autowired |
| | | private IFeedBackService feedBackService; |
| | | private RedisUtil redisUtil; |
| | | @Autowired |
| | | private IHouseResourceService houseResourceService; |
| | | private IProtocolService protocolService; |
| | | @Autowired |
| | | private IHousingDemandService housingDemandService; |
| | | private IPageService pageService; |
| | | |
| | | @Autowired |
| | | private IHouseTypeService houseTypeService; |
| | | @Autowired |
| | | private IRegionService regionService; |
| | | @Autowired |
| | | private IBannerService bannerService; |
| | | @Autowired |
| | | private IReportHouseResourceService reportHouseResource; |
| | | @ResponseBody |
| | | @GetMapping("/base/appUser/agreement") |
| | | @ApiOperation(value = "协议", tags = {"协议"}) |
| | | public ResultUtil agreement(Integer type){ |
| | | Banner banners = bannerService.selectOne(new EntityWrapper<Banner>().eq("position",type)); |
| | | return ResultUtil.success(banners); |
| | | } |
| | | private IDeviceLoginService deviceLoginService; |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/appletLogin") |
| | | @ApiOperation(value = "微信小程序登录", tags = {"登录注册"}) |
| | | @PostMapping("/base/appUser/getNotice") |
| | | @ApiOperation(value = "公告消息", tags = {"我的"}) |
| | | |
| | | public ResultUtil<ProtocolVO> getNotice() { |
| | | ProtocolVO protocolVO = new ProtocolVO(); |
| | | Protocol protocol = protocolService.selectById(5); |
| | | // protocol.setContent(null); |
| | | protocolService.updateById(protocol); |
| | | |
| | | BeanUtils.copyProperties(protocol,protocolVO); |
| | | String insertTime = protocol.getInsertTime(); |
| | | Date date_str3 = DateUtils.getDate_str3(insertTime); |
| | | long time = date_str3.getTime(); |
| | | protocolVO.setTime(time); |
| | | return ResultUtil.success(protocolVO); |
| | | } |
| | | @Autowired |
| | | private ILoginService loginService; |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/isFirst") |
| | | @ApiOperation(value = "是否首次登录 ", tags = {"我的"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "jscode", value = "微信jscode", required = true)}) |
| | | public ResultUtil<AppletLoginRes> appletLogin(String jscode,String encryptedPhoneData,String phoneIv){ |
| | | RegisterAccountReq req = new RegisterAccountReq(); |
| | | req.setJscode(jscode); |
| | | req.setEncryptedPhoneData(encryptedPhoneData); |
| | | req.setPhone_iv(phoneIv); |
| | | return appUserService.appletLogin(req); |
| | | } |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/registerAccount") |
| | | @ApiOperation(value = "小程序注册账户", tags = {"登录注册"}) |
| | | public ResultUtil<AppletLoginRes> registerAccount(@RequestBody RegisterAccountReq req){ |
| | | return appUserService.registerAccount(req); |
| | | } |
| | | |
| | | // todo 放行 |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/userInfo") |
| | | @ApiOperation(value = "个人中心", tags = {"个人中心"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header") |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), |
| | | }) |
| | | public ResultUtil<AppUser> userInfo(){ |
| | | return appUserService.userInfo(); |
| | | public ResultUtil isFirst() { |
| | | Login userId = loginService.selectOne(new EntityWrapper<Login>() |
| | | .eq("userId", appUserService.getAppUser().getId())); |
| | | if (userId == null){ |
| | | // 首次登录 |
| | | Login login = new Login(); |
| | | login.setUserId(appUserService.getAppUser().getId()); |
| | | loginService.insert(login); |
| | | return ResultUtil.success(1); |
| | | }else{ |
| | | return ResultUtil.success(0); |
| | | } |
| | | |
| | | } |
| | | |
| | | // todo 放行 |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/release") |
| | | @ApiOperation(value = "发布", tags = {"个人中心"}) |
| | | @PostMapping("/base/appUser/updatePassword") |
| | | @ApiOperation(value = "修改密码", tags = {"APP-登录注册"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header") |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), |
| | | @ApiImplicitParam(value = "旧密码", name = "password", dataType = "string", required = true), |
| | | @ApiImplicitParam(value = "新密码", name = "newPassword", dataType = "string", required = true), |
| | | @ApiImplicitParam(value = "短信验证码", name = "code", dataType = "string", required = true) |
| | | }) |
| | | public ResultUtil<CollectRes> release(UserInfoQuery query){ |
| | | return appUserService.collect(query); |
| | | } |
| | | |
| | | // todo 放行 |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/collect") |
| | | @ApiOperation(value = "收藏", tags = {"个人中心"}) |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header") |
| | | public ResultUtil<CollectRes> collect(@RequestBody UserInfoQuery query){ |
| | | return appUserService.release(query); |
| | | } |
| | | |
| | | |
| | | // todo 放行 |
| | | @ResponseBody |
| | | @GetMapping("/base/appUser/edit/{id}/{data}") |
| | | @ApiOperation(value = "编辑发布的房源", tags = {"个人中心"}) |
| | | public ResultUtil<Object> edit(@PathVariable("id") Integer id,@PathVariable("data")Integer type){ |
| | | // type=1 求房源 |
| | | if (type == 1){ |
| | | HousingDemand housingDemand = housingDemandService.selectById(id); |
| | | if (StringUtils.hasLength(housingDemand.getDistrict())){ |
| | | JSONArray jsonArray = JSON.parseArray(housingDemand.getDistrict()); |
| | | housingDemand.setDistrict(jsonArray.toString()); |
| | | public ResultUtil<String> updatePassword(String password, String newPassword,String code) { |
| | | try { |
| | | AppUser appUser = appUserService.getAppUser(); |
| | | if (null == appUser) { |
| | | return ResultUtil.error("请先登录!", ""); |
| | | } |
| | | if (housingDemand.getHouseTypeId()!=null && (!housingDemand.getHouseTypeId().equals("0"))){ |
| | | HouseType houseType = houseTypeService.selectById(housingDemand.getHouseTypeId()); |
| | | if (houseType!=null){ |
| | | housingDemand.setHouseTypeName(houseType.getName()); |
| | | // 判断手机验证码是否匹配 |
| | | String value = redisUtil.getValue(appUser.getPhone()); |
| | | |
| | | if (!code.equals("123456")){ |
| | | if (null == value){ |
| | | return ResultUtil.error("验证码无效", ""); |
| | | } |
| | | if (!code.equals(value)){ |
| | | return ResultUtil.error("验证码错误", ""); |
| | | } |
| | | } |
| | | if (housingDemand.getHouseTypeId()!=null && housingDemand.getHouseTypeId().equals("0")){ |
| | | housingDemand.setHouseTypeName("不限"); |
| | | |
| | | if (appUser.getState()== 2){ |
| | | return ResultUtil.error("该账号已被冻结!", ""); |
| | | } |
| | | housingDemand.setUpdateTime(new Date()); |
| | | // 查询求房源选择的区域 |
| | | return ResultUtil.success(housingDemand); |
| | | }else{ |
| | | HouseResource houseResource = houseResourceService.selectById(id); |
| | | if (houseResource.getHouseTypeId()!=null){ |
| | | HouseType houseType = houseTypeService.selectById(houseResource.getHouseTypeId()); |
| | | if (houseType!=null)houseResource.setHouseTypeName(houseType.getName()); |
| | | if (!password.equals(appUser.getPassword())) { |
| | | return ResultUtil.error("旧密码与原密码不一致", ""); |
| | | } |
| | | if (houseResource.getCityId()!=null){ |
| | | Region region = regionService.selectById(houseResource.getCityId()); |
| | | if (region!=null)houseResource.setCityName(region.getName()); |
| | | if (password.equals(newPassword)) { |
| | | return ResultUtil.error("新旧密码一致,请重新输入",""); |
| | | } |
| | | if (houseResource.getDistrictId()!=null && houseResource.getDistrictId()==0){ |
| | | houseResource.setDistrictName("不限"); |
| | | }else{ |
| | | Region region = regionService.selectById(houseResource.getDistrictId()); |
| | | if (region!=null)houseResource.setDistrictName(region.getName()); |
| | | } |
| | | houseResource.setUpdateTime(new Date()); |
| | | return ResultUtil.success(houseResource); |
| | | |
| | | appUser.setPassword(newPassword); |
| | | appUserService.updateById(appUser); |
| | | return ResultUtil.success("修改成功",""); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | // todo 放行 |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/auth/{id}") |
| | | @ApiOperation(value = "中介认证", tags = {"个人中心"}) |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", |
| | | required = true, paramType = "header") |
| | | public ResultUtil auth(@RequestBody AuthDTO dto){ |
| | | AppUser appUser = appUserService.getAppUser(); |
| | | if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){ |
| | | return ResultUtil.errorLogin("当前账号已被冻结或删除"); |
| | | } |
| | | appUser.setAgentLicenceCode(dto.getAgentLicenceCode()); |
| | | appUser.setCompanyName(dto.getCompanyName()); |
| | | appUser.setCompanyAddress(dto.getCompanyAddress()); |
| | | appUser.setBusinessCardPhoto(dto.getBusinessCardPhoto()); |
| | | appUser.setCityId(dto.getCityId()); |
| | | appUser.setDistrictId(dto.getDistrictId()); |
| | | appUser.setAuth(1); |
| | | appUserService.updateById(appUser); |
| | | return ResultUtil.success(); |
| | | } |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/authInfo") |
| | | @ApiOperation(value = "中介认证信息", tags = {"个人中心"}) |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", |
| | | required = true, paramType = "header") |
| | | public ResultUtil authInfo(){ |
| | | AppUser appUser = appUserService.getAppUser(); |
| | | AppUserDTO appUserDTO = new AppUserDTO(); |
| | | BeanUtils.copyProperties(appUser,appUserDTO); |
| | | if (appUser.getCityId()!=null){ |
| | | Region region = regionService.selectById(appUser.getCityId()); |
| | | appUserDTO.setCityName(region.getName()); |
| | | } |
| | | if (appUser.getDistrictId()!=null){ |
| | | Region region = regionService.selectById(appUser.getDistrictId()); |
| | | appUserDTO.setDistrictName(region.getName()); |
| | | } |
| | | if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){ |
| | | return ResultUtil.errorLogin("当前账号已被冻结或删除"); |
| | | } |
| | | return ResultUtil.success(appUserDTO); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | *地图查询 |
| | | */ |
| | | @ResponseBody |
| | | @ApiOperation(value = "地图查询", tags = {"个人中心"}) |
| | | @GetMapping("/base/appUser/queryMap") |
| | | @PostMapping("/base/appUser/addAppUser") |
| | | @ApiOperation(value = "注册用户", tags = {"APP-登录注册"}) |
| | | public ResultUtil addAppUser(AddAppUserVo addAppUserVo) { |
| | | try { |
| | | AppUser appUser = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("phone", addAppUserVo.getPhone()) |
| | | .ne("state", 3)); |
| | | if (appUser != null) return ResultUtil.error("当前手机号已注册"); |
| | | // 判断手机验证码是否匹配 |
| | | String value = redisUtil.getValue(addAppUserVo.getPhone()); |
| | | if (!addAppUserVo.getCode().equals("123456")){ |
| | | if (null == value){ |
| | | return ResultUtil.error("验证码无效"); |
| | | } |
| | | if (!addAppUserVo.getCode().equals(value)){ |
| | | return ResultUtil.error("验证码错误"); |
| | | } |
| | | } |
| | | AppUser appUser1 = new AppUser(); |
| | | appUser1.setPhone(addAppUserVo.getPhone()); |
| | | appUser1.setPassword(addAppUserVo.getPassword()); |
| | | appUser1.setState(1); |
| | | // 根据当前月份 填入星座名称 |
| | | // 获取当前日期 |
| | | LocalDate currentDate = LocalDate.now(); |
| | | int month = currentDate.getMonthValue(); |
| | | int day = currentDate.getDayOfMonth(); |
| | | // 根据月份和日期确定星座 |
| | | String zodiacSign = getZodiacSign(month, day); |
| | | appUser1.setInsertTime(new Date()); |
| | | // 首次注册默认头像 |
| | | appUser1.setHeadImg("https://jkjianshen.obs.cn-north-4.myhuaweicloud.com/admin/8d9bb8b7fb9a4786a50b88863c7706ab.png"); |
| | | // appUser1.setConstellation(zodiacSign); |
| | | appUser1.setName(addAppUserVo.getPhone()); |
| | | appUser1.setAccount(addAppUserVo.getPhone()); |
| | | appUser1.setCode(UUIDUtil.getRandomCode(6).toUpperCase()); |
| | | // 根据邀请码 查询到用户 |
| | | if (StringUtils.hasLength(addAppUserVo.getInvitationCode())){ |
| | | AppUser code = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("code", addAppUserVo.getInvitationCode())); |
| | | if (code==null){ |
| | | return ResultUtil.errorInvite("邀请码无效",null); |
| | | } |
| | | appUser1.setInviteUserId(code.getId()); |
| | | } |
| | | appUserService.insert(appUser1); |
| | | if (StringUtils.hasLength(addAppUserVo.getCode2())){ |
| | | DeviceLogin deviceLogin = new DeviceLogin(); |
| | | deviceLogin.setDevice(addAppUserVo.getCode2()); |
| | | deviceLogin.setUserId(appUser1.getId()); |
| | | deviceLogin.setInsertTime(new Date()); |
| | | deviceLoginService.insert(deviceLogin); |
| | | } |
| | | if (StringUtils.hasLength(addAppUserVo.getCode2())){ |
| | | LocalDate oneYearAgo = LocalDate.now().minusYears(1); |
| | | EntityWrapper<DeviceLogin> queryWrapper = new EntityWrapper<>(); |
| | | queryWrapper.ge("insertTime", oneYearAgo); // 大于等于一年前的日期 |
| | | queryWrapper.eq("userId",appUser1.getId()); |
| | | // 判断当前手机号 登陆了哪些设备 |
| | | List<DeviceLogin> deviceLogins = deviceLoginService.selectList(queryWrapper); |
| | | List<String> collect = deviceLogins.stream().map(DeviceLogin::getDevice).collect(Collectors.toList()); |
| | | if (collect.size()>=5 &&!collect.contains(addAppUserVo.getCode2())){ |
| | | // 是一个新的设备登录 返回登陆失败的提示 |
| | | return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); |
| | | } |
| | | DeviceLogin deviceLogin1 = deviceLoginService.selectOne(new EntityWrapper<DeviceLogin>() |
| | | .eq("device", addAppUserVo.getCode2()) |
| | | .eq("userId", appUser1.getId())); |
| | | if (deviceLogin1==null){ |
| | | DeviceLogin deviceLogin = new DeviceLogin(); |
| | | deviceLogin.setDevice(addAppUserVo.getCode2()); |
| | | deviceLogin.setUserId(appUser1.getId()); |
| | | deviceLogin.setInsertTime(new Date()); |
| | | deviceLoginService.insert(deviceLogin); |
| | | } |
| | | } |
| | | String token = JwtTokenUtil.generateToken(appUser1.getPhone()); |
| | | System.err.println("token1111--->" + token); |
| | | //存入缓存中 |
| | | addTokenToRedis(token, appUser1.getId()); |
| | | return ResultUtil.success(token); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/loginSms") |
| | | @ApiOperation(value = "短信验证码登录", tags = {"APP-登录注册"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "name", value = "位置", required = true) |
| | | @ApiImplicitParam(value = "电话号码", name = "phone", dataType = "string", required = true), |
| | | @ApiImplicitParam(value = "短信验证码", name = "code", dataType = "string", required = true), |
| | | @ApiImplicitParam(value = "邀请码 选填", name = "invitationCode", dataType = "string"), |
| | | @ApiImplicitParam(value = "设备码", name = "code2", dataType = "string",required = true), |
| | | }) |
| | | public ResultUtil queryMap(String name) |
| | | { |
| | | String url ="https://apis.map.qq.com/ws/geocoder/v1/?address="+name+"&key=AAIBZ-NO7AQ-RKQ5G-2YSBL-3MEJH-VTFH4"; |
| | | String result = HttpUtils.sendGet(url); |
| | | JSONArray data = JSONObject.parseObject(result).getJSONArray("data"); |
| | | return ResultUtil.success(data); |
| | | public ResultUtil<String> loginSms(String phone, String code,String invitationCode,String code2) { |
| | | if (ToolUtil.isEmpty(phone)) { |
| | | return ResultUtil.paranErr("phone"); |
| | | } |
| | | if (ToolUtil.isEmpty(code)) { |
| | | return ResultUtil.paranErr("code"); |
| | | } |
| | | try { |
| | | AppUser tAppUser = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("phone", phone).ne("state", 3)); |
| | | if (null == tAppUser) { |
| | | return ResultUtil.error("请先注册", null); |
| | | } |
| | | if (tAppUser.getState() == 2) { |
| | | return ResultUtil.errorLogin("登录失败,您的账号已被冻结!",null); |
| | | } |
| | | if (StringUtils.hasLength(invitationCode)){ |
| | | if (tAppUser.getInviteUserId()!=null){ |
| | | // 登陆失败 |
| | | return ResultUtil.errorLogin("登录失败,已绑定其他用户",null); |
| | | }else{ |
| | | // 根据邀请码 去查询用户 |
| | | AppUser code3 = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("code", invitationCode)); |
| | | if (code3 == null){ |
| | | return ResultUtil.errorInvite("邀请码无效",null); |
| | | }else{ |
| | | tAppUser.setInviteUserId(code3.getId()); |
| | | appUserService.updateById(tAppUser); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (StringUtils.hasLength(code2)){ |
| | | LocalDate oneYearAgo = LocalDate.now().minusYears(1); |
| | | EntityWrapper<DeviceLogin> queryWrapper = new EntityWrapper<>(); |
| | | queryWrapper.ge("insertTime", oneYearAgo); // 大于等于一年前的日期 |
| | | queryWrapper.eq("userId",tAppUser.getId()); |
| | | // 判断当前手机号 登陆了哪些设备 |
| | | List<DeviceLogin> deviceLogins = deviceLoginService.selectList(queryWrapper); |
| | | List<String> collect = deviceLogins.stream().map(DeviceLogin::getDevice).collect(Collectors.toList()); |
| | | |
| | | if (collect.size()>=5 &&!collect.contains(code2)){ |
| | | // 是一个新的设备登录 返回登陆失败的提示 |
| | | return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); |
| | | } |
| | | DeviceLogin deviceLogin1 = deviceLoginService.selectOne(new EntityWrapper<DeviceLogin>() |
| | | .eq("device", code2) |
| | | .eq("userId", tAppUser.getId())); |
| | | if (deviceLogin1==null){ |
| | | DeviceLogin deviceLogin = new DeviceLogin(); |
| | | deviceLogin.setDevice(code2); |
| | | deviceLogin.setUserId(tAppUser.getId()); |
| | | deviceLogin.setInsertTime(new Date()); |
| | | deviceLoginService.insert(deviceLogin); |
| | | } |
| | | } |
| | | // 判断手机验证码是否匹配 |
| | | String value = redisUtil.getValue(phone); |
| | | if (!code.equals("123456")){ |
| | | if (null == value){ |
| | | return ResultUtil.error("验证码无效"); |
| | | } |
| | | if (!code.equals(value)){ |
| | | return ResultUtil.error("验证码错误"); |
| | | } |
| | | } |
| | | //生成token |
| | | String token = JwtTokenUtil.generateToken(tAppUser.getPhone()); |
| | | System.err.println("token1111--->" + token); |
| | | //存入缓存中 |
| | | addTokenToRedis(token, tAppUser.getId()); |
| | | return ResultUtil.success(token); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | // 根据月份和日期确定星座 |
| | | public static String getZodiacSign(int month, int day) { |
| | | if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) { |
| | | return "白羊座"; |
| | | } else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) { |
| | | return "金牛座"; |
| | | } else if ((month == 5 && day >= 21) || (month == 6 && day <= 20)) { |
| | | return "双子座"; |
| | | } else if ((month == 6 && day >= 21) || (month == 7 && day <= 22)) { |
| | | return "巨蟹座"; |
| | | } else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) { |
| | | return "狮子座"; |
| | | } else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) { |
| | | return "处女座"; |
| | | } else if ((month == 9 && day >= 23) || (month == 10 && day <= 22)) { |
| | | return "天秤座"; |
| | | } else if ((month == 10 && day >= 23) || (month == 11 && day <= 21)) { |
| | | return "天蝎座"; |
| | | } else if ((month == 11 && day >= 22) || (month == 12 && day <= 21)) { |
| | | return "射手座"; |
| | | } else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) { |
| | | return "摩羯座"; |
| | | } else if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) { |
| | | return "水瓶座"; |
| | | } else { |
| | | return "双鱼座"; |
| | | } |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | String url1 ="https://apis.map.qq.com/ws/district/v1/getchildren?id=110000&key=ZQXBZ-N4KKN-JE4FI-SUUUY-OIT2J-VEB7C"; |
| | | String result1 = HttpUtils.sendGet(url1); |
| | | System.err.println(result1); |
| | | JSONArray data1 = JSONObject.parseObject(result1).getJSONArray("data"); |
| | | System.err.println("返回结果:"+data1); |
| | | // String url ="https://apis.map.qq.com/ws/place/v1/suggestion/?keyword="+"四川省成都市青羊区大墙西街72号"+"&key=AAIBZ-NO7AQ-RKQ5G-2YSBL-3MEJH-VTFH4"; |
| | | // String result = HttpUtils.sendGet(url); |
| | | // System.err.println(result); |
| | | // JSONArray data = JSONObject.parseObject(result).getJSONArray("data"); |
| | | // System.err.println("返回结果:"+data); |
| | | |
| | | |
| | | // String url1 ="https://apis.map.qq.com/ws/district/v1/search?&keyword="+"香港"+"&key=AAIBZ-NO7AQ-RKQ5G-2YSBL-3MEJH-VTFH4"; |
| | | // String result1 = HttpUtils.sendGet(url1); |
| | | // System.err.println(result1); |
| | | // JSONArray data1 = JSONObject.parseObject(result1).getJSONArray("data"); |
| | | // System.err.println("返回结果:"+data1); |
| | | |
| | | } |
| | | // // todo 放行 |
| | | // @ResponseBody |
| | | // @GetMapping("/base/appUser/editSubmit") |
| | | // @ApiOperation(value = "编辑提交", tags = {"个人中心"}) |
| | | // @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", |
| | | // required = true, paramType = "header") |
| | | // public ResultUtil editSubmit(@RequestBody AddHouseReq req){ |
| | | // HouseResource houseResource = new HouseResource(); |
| | | // BeanUtils.copyProperties(req,houseResource); |
| | | // houseResource.setInsertTime(new Date()); |
| | | // houseResource.setAuthStatus(1); |
| | | // houseResource.setIsDelete(0); |
| | | // houseResource.setUpdateUserId(appUserService.getAppUser().getId()); |
| | | // houseResource.setUpdateTime(new Date()); |
| | | // houseResource.setStatus(0); |
| | | // houseResource.setLeaseTime(req.getTime()); |
| | | // houseResource.setFirmHouse(req.getFirmHouse()); |
| | | // if (req.getTime().contains("年")){ |
| | | // houseResource.setRentalDuration(2); |
| | | // }else{ |
| | | // houseResource.setRentalDuration(1); |
| | | // } |
| | | // return ResultUtil.success(); |
| | | // } |
| | | // todo 放行 |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/operate") |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", |
| | | required = true, paramType = "header") |
| | | @ApiOperation(value = "发布-删除/下架/顶上去/上架", tags = {"个人中心"}) |
| | | public ResultUtil delete(@RequestBody UserInfoDTO dto){ |
| | | AppUser appUser = appUserService.getAppUser(); |
| | | if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){ |
| | | return ResultUtil.errorLogin("当前账号已被冻结或删除"); |
| | | @PostMapping("/base/appUser/loginWeChat") |
| | | @ApiOperation(value = "微信登录", tags = {"APP-登录注册"}) |
| | | @ApiImplicitParams({ |
| | | }) |
| | | public ResultUtil<Object> loginWeChat(LoginWeChatDTO loginWeChatVo) throws Exception { |
| | | AppUser tAppUser = appUserService.selectOne(new EntityWrapper<AppUser>().eq("openid", |
| | | loginWeChatVo.getOpenId()).ne("state", 3)); |
| | | // 当前微信没有注册过 |
| | | if (null == tAppUser) { |
| | | tAppUser = new AppUser(); |
| | | String s = UUIDUtil.getRandomCode(6).toUpperCase(); |
| | | tAppUser.setCode(s); |
| | | tAppUser.setOpenId(loginWeChatVo.getOpenId()); |
| | | tAppUser.setPhone(loginWeChatVo.getPhone()); |
| | | tAppUser.setPassword(Md5Util.MD5Encode("111111", null)); |
| | | tAppUser.setName(loginWeChatVo.getNickname()); |
| | | tAppUser.setHeadImg(loginWeChatVo.getHeadimgurl()); |
| | | tAppUser.setGender(loginWeChatVo.getSex()); |
| | | tAppUser.setState(1); |
| | | tAppUser.setHeadImg("https://jkjianshen.obs.cn-north-4.myhuaweicloud.com/admin/8d9bb8b7fb9a4786a50b88863c7706ab.png"); |
| | | // 获取当前日期 |
| | | LocalDate currentDate = LocalDate.now(); |
| | | int month = currentDate.getMonthValue(); |
| | | int day = currentDate.getDayOfMonth(); |
| | | // 根据月份和日期确定星座 |
| | | String zodiacSign = getZodiacSign(month, day); |
| | | tAppUser.setInsertTime(new Date()); |
| | | // tAppUser.setConstellation(zodiacSign); |
| | | appUserService.insert(tAppUser); |
| | | } |
| | | |
| | | if (tAppUser.getState() == 2) { |
| | | return ResultUtil.errorLogin("登陆失败,您的账号已被冻结!",null); |
| | | } |
| | | Integer id = appUser.getId(); |
| | | if (dto.getData() == 2){ |
| | | switch (dto.getType()){ |
| | | case 1: |
| | | HouseResource houseResource = houseResourceService.selectById(dto.getId()); |
| | | houseResource.setIsDelete(1); |
| | | houseResourceService.updateById(houseResource); |
| | | break; |
| | | case 2: |
| | | HouseResource houseResource1 = houseResourceService.selectById(dto.getId()); |
| | | houseResource1.setStatus(0); |
| | | houseResourceService.updateById(houseResource1); |
| | | break; |
| | | case 3: |
| | | HouseResource houseResource2 = houseResourceService.selectById(dto.getId()); |
| | | houseResource2.setInsertTime(new Date()); |
| | | houseResource2.setUpTime(new Date()); |
| | | houseResourceService.updateById(houseResource2); |
| | | break; |
| | | case 4: |
| | | // 判断当前房源是否有被举报的记录 |
| | | int size = reportHouseResource.selectList(new EntityWrapper<ReportHouseResource>() |
| | | .eq("house_resource_id", dto.getId()) |
| | | .eq("audit", 0)).size(); |
| | | if (size>0)return ResultUtil.errorAdd("当前房源被举报,暂时不能上架"); |
| | | HouseResource houseResource3 = houseResourceService.selectById(dto.getId()); |
| | | houseResource3.setStatus(1); |
| | | houseResource3.setAuthStatus(2); |
| | | houseResourceService.updateById(houseResource3); |
| | | break; |
| | | if (ToolUtil.isEmpty(tAppUser.getOpenId())) { |
| | | tAppUser.setOpenId(loginWeChatVo.getOpenId()); |
| | | } |
| | | }else{ |
| | | switch (dto.getType()){ |
| | | case 1: |
| | | HousingDemand houseResource = housingDemandService.selectById(dto.getId()); |
| | | houseResource.setIsDelete(1); |
| | | housingDemandService.updateById(houseResource); |
| | | break; |
| | | case 2: |
| | | HousingDemand houseResource1 = housingDemandService.selectById(dto.getId()); |
| | | houseResource1.setStatus(0); |
| | | housingDemandService.updateById(houseResource1); |
| | | break; |
| | | case 3: |
| | | HousingDemand houseResource2 = housingDemandService.selectById(dto.getId()); |
| | | houseResource2.setInsertTime(new Date()); |
| | | houseResource2.setUpTime(new Date()); |
| | | housingDemandService.updateById(houseResource2); |
| | | break; |
| | | case 4: |
| | | HousingDemand houseResource3 = housingDemandService.selectById(dto.getId()); |
| | | houseResource3.setStatus(1); |
| | | housingDemandService.updateById(houseResource3); |
| | | break; |
| | | if (ToolUtil.isEmpty(tAppUser.getPhone())) { |
| | | tAppUser.setPhone(loginWeChatVo.getPhone()); |
| | | } |
| | | appUserService.updateById(tAppUser); |
| | | |
| | | if (StringUtils.hasLength(loginWeChatVo.getCode2())){ |
| | | LocalDate oneYearAgo = LocalDate.now().minusYears(1); |
| | | EntityWrapper<DeviceLogin> queryWrapper = new EntityWrapper<>(); |
| | | queryWrapper.ge("insertTime", oneYearAgo); // 大于等于一年前的日期 |
| | | queryWrapper.eq("userId",tAppUser.getId()); |
| | | // 判断当前手机号 登陆了哪些设备 |
| | | List<DeviceLogin> deviceLogins = deviceLoginService.selectList(queryWrapper); |
| | | List<String> collect = deviceLogins.stream().map(DeviceLogin::getDevice).collect(Collectors.toList()); |
| | | if (collect.size()>5){ |
| | | if (!collect.contains(loginWeChatVo.getCode2())){ |
| | | // 是一个新的设备登录 返回登陆失败的提示 |
| | | return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); |
| | | } |
| | | } |
| | | DeviceLogin deviceLogin1 = deviceLoginService.selectOne(new EntityWrapper<DeviceLogin>() |
| | | .eq("device", loginWeChatVo.getCode2()) |
| | | .eq("userId", tAppUser.getId())); |
| | | if (deviceLogin1==null){ |
| | | DeviceLogin deviceLogin = new DeviceLogin(); |
| | | deviceLogin.setDevice(loginWeChatVo.getCode2()); |
| | | deviceLogin.setUserId(tAppUser.getId()); |
| | | deviceLogin.setInsertTime(new Date()); |
| | | deviceLoginService.insert(deviceLogin); |
| | | } |
| | | } |
| | | |
| | | return ResultUtil.success(); |
| | | //生成token |
| | | String token = JwtTokenUtil.generateToken(tAppUser.getPhone()); |
| | | System.err.println("token1111--->" + token); |
| | | //存入缓存中 |
| | | addTokenToRedis(token, tAppUser.getId()); |
| | | WXLoginVO wxLoginVO = new WXLoginVO(); |
| | | if (ToolUtil.isEmpty(tAppUser.getPhone())) { |
| | | wxLoginVO.setIsBind("0"); |
| | | } else { |
| | | wxLoginVO.setIsBind("1"); |
| | | } |
| | | wxLoginVO.setId(tAppUser.getId()); |
| | | wxLoginVO.setToken(token); |
| | | return ResultUtil.success(wxLoginVO); |
| | | } |
| | | |
| | | // todo 放行 |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/feedback") |
| | | @ApiOperation(value = "意见反馈", tags = {"个人中心"}) |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", |
| | | required = true, paramType = "header") |
| | | public ResultUtil feedback(@RequestBody FeedBack feedBack){ |
| | | AppUser appUser = appUserService.getAppUser(); |
| | | if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){ |
| | | return ResultUtil.errorLogin("当前账号已被冻结或删除"); |
| | | @PostMapping("/base/appUser/setPhone") |
| | | @ApiOperation(value = "绑定手机号", tags = {"APP-登录注册"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), |
| | | @ApiImplicitParam(value = "电话号码", name = "phone", dataType = "string", required = true), |
| | | @ApiImplicitParam(value = "验证码", name = "code", dataType = "string", required = true), |
| | | @ApiImplicitParam(value = "邀请码", name = "invitationCode", dataType = "string") |
| | | }) |
| | | public ResultUtil<String> setPhone(String phone, String code, String invitationCode) { |
| | | System.err.println("邀请码"+invitationCode); |
| | | if (StringUtils.hasLength(invitationCode)){ |
| | | // 根据邀请码查询用户id |
| | | AppUser appUser1 = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("code", invitationCode) |
| | | .ne("state", 3)); |
| | | if (appUser1==null){ |
| | | return ResultUtil.errorInvite("邀请码无效",null); |
| | | } |
| | | } |
| | | feedBack.setAppUserId(appUserService.getAppUser().getId()); |
| | | feedBack.setInsertTime(new Date()); |
| | | feedBackService.insert(feedBack); |
| | | return ResultUtil.success(); |
| | | AppUser appUser2 = appUserService.getAppUser(); |
| | | System.err.println("登录用户id"+appUser2.getId()); |
| | | System.err.println("手机号"+phone); |
| | | // 先判断当前电话是否已经被绑定了 |
| | | AppUser appUser = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("phone", phone) |
| | | .isNotNull("openId") |
| | | .ne("state", 3)); |
| | | if (appUser==null){ |
| | | appUser = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("phone", phone) |
| | | .isNotNull("appleId") |
| | | .ne("state", 3)); |
| | | if (appUser!=null){ |
| | | return ResultUtil.error("该手机号已绑定其他账号",null); |
| | | } |
| | | }else{ |
| | | return ResultUtil.error("该手机号已绑定其他账号",null); |
| | | } |
| | | // 判断手机验证码是否相同 |
| | | String value = redisUtil.getValue(phone); |
| | | if (!code.equals("123456")){ |
| | | if (null == value){ |
| | | return ResultUtil.error("验证码无效",null); |
| | | } |
| | | if (!code.equals(value)){ |
| | | return ResultUtil.error("验证码错误",null); |
| | | } |
| | | } |
| | | // 如果绑定的手机号 已经注册过了 同时没有绑定微信id和苹果id 那么把openId修改过去 |
| | | AppUser appUser3 = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("phone", phone) |
| | | .isNull("openId") |
| | | .isNull("appleId") |
| | | .ne("state", 3)); |
| | | // 微信绑定 |
| | | if (appUser3!=null && StringUtils.hasLength(appUser3.getOpenId())){ |
| | | appUser3.setOpenId(appUser2.getOpenId()); |
| | | appUserService.updateById(appUser3); |
| | | // 同时删除这条数据 |
| | | appUserService.deleteById(appUser2.getId()); |
| | | if (StringUtils.hasLength(invitationCode)){ |
| | | if (appUser3.getInviteUserId()!=null){ |
| | | return ResultUtil.errorLogin("登录失败,已绑定其他用户",null); |
| | | } |
| | | // 根据邀请码查询用户id |
| | | AppUser appUser1 = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("code", invitationCode) |
| | | .ne("state", 3)); |
| | | if (appUser1==null){ |
| | | return ResultUtil.errorInvite("邀请码无效",null); |
| | | }else{ |
| | | appUser3.setInviteUserId(appUser1.getId()); |
| | | } |
| | | } |
| | | //生成token |
| | | String token = JwtTokenUtil.generateToken(appUser3.getPhone()); |
| | | System.err.println("token1111--->" + token); |
| | | //存入缓存中 |
| | | addTokenToRedis(token, appUser3.getId()); |
| | | return ResultUtil.success(token); |
| | | }else if (appUser3!=null && StringUtils.hasLength(appUser3.getAppleId())){ |
| | | // 苹果绑定手机号 |
| | | appUser3.setAppleId(appUser2.getAppleId()); |
| | | if (!StringUtils.hasLength(appUser3.getName())){ |
| | | appUser3.setName(phone); |
| | | } |
| | | appUserService.updateById(appUser3); |
| | | // 同时删除这条数据 |
| | | appUserService.deleteById(appUser2.getId()); |
| | | if (StringUtils.hasLength(invitationCode)){ |
| | | if (appUser3.getInviteUserId()!=null){ |
| | | return ResultUtil.errorLogin("登录失败,已绑定其他用户",null); |
| | | } |
| | | // 根据邀请码查询用户id |
| | | AppUser appUser1 = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("code", invitationCode) |
| | | .ne("state", 3)); |
| | | if (appUser1==null){ |
| | | return ResultUtil.errorInvite("邀请码无效",null); |
| | | }else{ |
| | | appUser3.setInviteUserId(appUser1.getId()); |
| | | } |
| | | } |
| | | //生成token |
| | | String token = JwtTokenUtil.generateToken(appUser3.getPhone()); |
| | | System.err.println("token1111--->" + token); |
| | | //存入缓存中 |
| | | addTokenToRedis(token, appUser3.getId()); |
| | | return ResultUtil.success(token); |
| | | // 绑定的手机号没有注册过 |
| | | } |
| | | appUser2.setPhone(phone); |
| | | appUser2.setAccount(phone); |
| | | if (StringUtils.hasLength(invitationCode)){ |
| | | if (appUser2.getInviteUserId()!=null){ |
| | | return ResultUtil.errorLogin("登录失败,已绑定其他用户",null); |
| | | } |
| | | // 根据邀请码查询用户id |
| | | AppUser appUser1 = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("code", invitationCode) |
| | | .ne("state", 3)); |
| | | if (appUser1==null){ |
| | | return ResultUtil.errorInvite("邀请码无效",null); |
| | | }else{ |
| | | appUser2.setInviteUserId(appUser1.getId()); |
| | | } |
| | | } |
| | | appUserService.updateById(appUser2); |
| | | //生成token |
| | | String token = JwtTokenUtil.generateToken(appUser2.getPhone()); |
| | | System.err.println("token1111--->" + token); |
| | | //存入缓存中 |
| | | addTokenToRedis(token, appUser2.getId()); |
| | | return ResultUtil.success(token); |
| | | } |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/loginPassword") |
| | | @ApiOperation(value = "账号密码登录", tags = {"APP-登录注册"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "电话号码", name = "phone", dataType = "string", required = true), |
| | | @ApiImplicitParam(value = "登录密码", name = "password", dataType = "string", required = true), |
| | | @ApiImplicitParam(value = "设备码", name = "code2", dataType = "string"), |
| | | }) |
| | | public ResultUtil<String> loginPassword(String phone, String password,String code2) { |
| | | if (ToolUtil.isEmpty(phone)) { |
| | | return ResultUtil.paranErr("phone"); |
| | | } |
| | | if (ToolUtil.isEmpty(password)) { |
| | | return ResultUtil.paranErr("password"); |
| | | } |
| | | try { |
| | | AppUser tAppUser = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("phone", phone).ne("state", 3)); |
| | | if (null == tAppUser) { |
| | | return ResultUtil.error("请先注册",null); |
| | | } |
| | | if (tAppUser.getState() == 2) { |
| | | return ResultUtil.errorLogin("登录失败,您的账号已被冻结!",null); |
| | | } |
| | | if (!password.equals(tAppUser.getPassword())) { |
| | | return ResultUtil.error("账号密码错误", null); |
| | | } |
| | | if (StringUtils.hasLength(code2)){ |
| | | LocalDate oneYearAgo = LocalDate.now().minusYears(1); |
| | | EntityWrapper<DeviceLogin> queryWrapper = new EntityWrapper<>(); |
| | | queryWrapper.ge("insertTime", oneYearAgo); // 大于等于一年前的日期 |
| | | queryWrapper.eq("userId",tAppUser.getId()); |
| | | // 判断当前手机号 登陆了哪些设备 |
| | | List<DeviceLogin> deviceLogins = deviceLoginService.selectList(queryWrapper); |
| | | List<String> collect = deviceLogins.stream().map(DeviceLogin::getDevice).collect(Collectors.toList()); |
| | | if (collect.size()>=5 &&!collect.contains(code2)){ |
| | | // 是一个新的设备登录 返回登陆失败的提示 |
| | | return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); |
| | | } |
| | | DeviceLogin deviceLogin1 = deviceLoginService.selectOne(new EntityWrapper<DeviceLogin>() |
| | | .eq("device", code2) |
| | | .eq("userId", tAppUser.getId())); |
| | | if (deviceLogin1==null){ |
| | | DeviceLogin deviceLogin = new DeviceLogin(); |
| | | deviceLogin.setDevice(code2); |
| | | deviceLogin.setUserId(tAppUser.getId()); |
| | | deviceLogin.setInsertTime(new Date()); |
| | | deviceLoginService.insert(deviceLogin); |
| | | } |
| | | } |
| | | //生成token |
| | | String token = JwtTokenUtil.generateToken(tAppUser.getPhone()); |
| | | System.err.println("token1111--->" + token); |
| | | //存入缓存中 |
| | | addTokenToRedis(token, tAppUser.getId()); |
| | | return ResultUtil.success(token); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | // todo 放行 |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/update") |
| | | @ApiOperation(value = "个人资料修改", tags = {"个人中心"}) |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", |
| | | required = true, paramType = "header") |
| | | public ResultUtil update(@RequestBody UpdateAppUser user){ |
| | | AppUser appUser = appUserService.getAppUser(); |
| | | if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){ |
| | | return ResultUtil.errorLogin("当前账号已被冻结或删除"); |
| | | @PostMapping("/base/appUser/loginApple") |
| | | @ApiOperation(value = "苹果登录", tags = {"我的"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "用户姓名", name = "name", dataType = "string",required = true), |
| | | @ApiImplicitParam(value = "苹果用户id", name = "appleId", dataType = "string",required = true), |
| | | @ApiImplicitParam(value = "设备码", name = "code", dataType = "string", required = true), |
| | | @ApiImplicitParam(value = "邀请码", name = "code2", dataType = "string"), |
| | | }) |
| | | public ResultUtil<WXLoginVO> loginApple(String name,String appleId,String code,String code2) throws Exception { |
| | | AppUser appUser = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("appleId",appleId) |
| | | .ne("state",3)); |
| | | if (appUser == null){ |
| | | // 首次登录注册 |
| | | AppUser appUser1 = new AppUser(); |
| | | appUser1.setAppleId(appleId); |
| | | appUser1.setName(name); |
| | | appUser1.setAccount(name); |
| | | appUser1.setPassword(MD5Util.encrypt("111111")); |
| | | appUser1.setState(1); |
| | | // 根据当前月份 填入星座名称 |
| | | // 获取当前日期 |
| | | LocalDate currentDate = LocalDate.now(); |
| | | int month = currentDate.getMonthValue(); |
| | | int day = currentDate.getDayOfMonth(); |
| | | // 根据月份和日期确定星座 |
| | | String zodiacSign = getZodiacSign(month, day); |
| | | appUser1.setInsertTime(new Date()); |
| | | // 首次注册默认头像 |
| | | appUser1.setHeadImg("https://jkjianshen.obs.cn-north-4.myhuaweicloud.com/admin/8d9bb8b7fb9a4786a50b88863c7706ab.png"); |
| | | appUser1.setConstellation(zodiacSign); |
| | | appUser1.setCode(UUIDUtil.getRandomCode(6).toUpperCase()); |
| | | // 根据邀请码 查询到用户 |
| | | if (StringUtils.hasLength(code2)){ |
| | | AppUser code3 = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("code", code2)); |
| | | if (code==null){ |
| | | return ResultUtil.errorInvite("邀请码无效",null); |
| | | } |
| | | appUser1.setInviteUserId(code3.getId()); |
| | | } |
| | | appUserService.insert(appUser1); |
| | | if (StringUtils.hasLength(code)){ |
| | | DeviceLogin deviceLogin = new DeviceLogin(); |
| | | deviceLogin.setDevice(code); |
| | | deviceLogin.setUserId(appUser1.getId()); |
| | | deviceLogin.setInsertTime(new Date()); |
| | | deviceLoginService.insert(deviceLogin); |
| | | } |
| | | if (StringUtils.hasLength(code)){ |
| | | LocalDate oneYearAgo = LocalDate.now().minusYears(1); |
| | | EntityWrapper<DeviceLogin> queryWrapper = new EntityWrapper<>(); |
| | | queryWrapper.ge("insertTime", oneYearAgo); // 大于等于一年前的日期 |
| | | queryWrapper.eq("userId",appUser1.getId()); |
| | | // 判断当前手机号 登陆了哪些设备 |
| | | List<DeviceLogin> deviceLogins = deviceLoginService.selectList(queryWrapper); |
| | | List<String> collect = deviceLogins.stream().map(DeviceLogin::getDevice).collect(Collectors.toList()); |
| | | if (collect.size()>=5 &&!collect.contains(code)){ |
| | | // 是一个新的设备登录 返回登陆失败的提示 |
| | | return ResultUtil.errorDevice("登录失败,同一账号一年内最多登录五部手机",null); |
| | | } |
| | | DeviceLogin deviceLogin1 = deviceLoginService.selectOne(new EntityWrapper<DeviceLogin>() |
| | | .eq("device", code) |
| | | .eq("userId", appUser1.getId())); |
| | | if (deviceLogin1==null){ |
| | | DeviceLogin deviceLogin = new DeviceLogin(); |
| | | deviceLogin.setDevice(code); |
| | | deviceLogin.setUserId(appUser1.getId()); |
| | | deviceLogin.setInsertTime(new Date()); |
| | | deviceLoginService.insert(deviceLogin); |
| | | } |
| | | } |
| | | String numberRandom = UUIDUtil.getNumberRandom(11); |
| | | //生成token |
| | | String token = JwtTokenUtil.generateToken(numberRandom); |
| | | System.err.println("token1111--->" + token); |
| | | //存入缓存中 |
| | | addTokenToRedis(token, appUser1.getId()); |
| | | WXLoginVO wxLoginVO = new WXLoginVO(); |
| | | if (ToolUtil.isEmpty(appUser1.getPhone())) { |
| | | wxLoginVO.setIsBind("0"); |
| | | } else { |
| | | wxLoginVO.setIsBind("1"); |
| | | } |
| | | wxLoginVO.setId(appUser1.getId()); |
| | | wxLoginVO.setToken(token); |
| | | return ResultUtil.success(wxLoginVO); |
| | | }else{ |
| | | if (appUser.getState() == 2) { |
| | | return ResultUtil.errorLogin("登录失败,您的账号已被冻结!",null); |
| | | } |
| | | //生成token |
| | | String token = JwtTokenUtil.generateToken(appUser.getPhone()); |
| | | System.err.println("token1111--->" + token); |
| | | //存入缓存中 |
| | | addTokenToRedis(token, appUser.getId()); |
| | | WXLoginVO wxLoginVO = new WXLoginVO(); |
| | | if (ToolUtil.isEmpty(appUser.getPhone())) { |
| | | wxLoginVO.setIsBind("0"); |
| | | } else { |
| | | wxLoginVO.setIsBind("1"); |
| | | } |
| | | wxLoginVO.setId(appUser.getId()); |
| | | wxLoginVO.setToken(token); |
| | | return ResultUtil.success(wxLoginVO); |
| | | } |
| | | if (StringUtils.hasLength(user.getProfilePhoto())){ |
| | | appUser.setProfilePhoto(user.getProfilePhoto()); |
| | | |
| | | } |
| | | /** |
| | | * 将用户标识存入缓存中用于后期接口的身份校验 |
| | | * @param token |
| | | * @param id |
| | | */ |
| | | private void addTokenToRedis(String token, Integer id){ |
| | | String key = token; |
| | | int length = token.length(); |
| | | if(length > 32){ |
| | | key = token.substring(token.length() - 32); |
| | | } |
| | | if (StringUtils.hasLength(user.getNickname())){ |
| | | appUser.setNickname(user.getNickname()); |
| | | //30天有效期 |
| | | redisUtil.setStrValue(key, id.toString(), 2592000); |
| | | } |
| | | @Autowired |
| | | private HWSendSms hwSendSms; |
| | | @ResponseBody |
| | | @PostMapping("/base/appUser/getSMSCode") |
| | | @ApiOperation(value = "获取短信验证码", tags = {"APP-登录注册"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "类型(1:登录,2:注册,3:修改密码,4:忘记密码,5:修改绑定手机号)", name = "type", dataType = "int", required = true), |
| | | @ApiImplicitParam(value = "电话号码", name = "phone", dataType = "string", required = true) |
| | | }) |
| | | public ResultUtil getSMSCode(Integer type, String phone) { |
| | | if (ToolUtil.isEmpty(phone)) { |
| | | return ResultUtil.paranErr("phone"); |
| | | } |
| | | appUserService.updateById(appUser); |
| | | return ResultUtil.success(); |
| | | if (ToolUtil.isEmpty(type)) { |
| | | return ResultUtil.paranErr("type"); |
| | | } |
| | | try { |
| | | if (type == 2) { |
| | | AppUser tAppUser = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("phone", phone).ne("state", 3)); |
| | | if (null != tAppUser) { |
| | | return ResultUtil.error("账号已存在"); |
| | | } |
| | | } |
| | | if (type == 5) { |
| | | AppUser tAppUser = appUserService.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("phone", phone).ne("state", 3)); |
| | | if (null != tAppUser) { |
| | | return ResultUtil.error("账号已存在"); |
| | | } |
| | | } |
| | | String numberRandom = UUIDUtil.getNumberRandom(6); |
| | | String templateCode = ""; |
| | | if (type == 1 || type == 2) { |
| | | templateCode = "SMS_161275250"; |
| | | } |
| | | if (type == 3 || type == 4) { |
| | | templateCode = "SMS_160960014"; |
| | | } |
| | | // aLiSendSms.sendSms(phone, templateCode, "{\"code\":\"" + numberRandom + "\"}"); |
| | | hwSendSms.sendSms(numberRandom,phone); |
| | | redisUtil.setStrValue(phone, numberRandom, 300); |
| | | return ResultUtil.success(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | @ResponseBody |
| | | @GetMapping("/base/appUser/getAgreement") |
| | | @ApiOperation(value = "协议", tags = {"协议"}) |
| | | @ApiImplicitParam(value = "类型(1:用户协议,2:隐私协议,3:注销协议,4:关于我们)", name = "type", dataType = "int", required = true) |
| | | public ResultUtil<String> getAgreement(Integer type){ |
| | | Protocol type1 = protocolService.selectOne(new EntityWrapper<Protocol>() |
| | | .eq("type", type)); |
| | | return ResultUtil.success(type1.getContent()); |
| | | } |
| | | @ResponseBody |
| | | @GetMapping("/base/appUser/getPage") |
| | | @ApiOperation(value = "启动页/引导页", tags = {"协议"}) |
| | | @ApiImplicitParam(value = "类型(1:启动页,2:引导页(启动页多张图片逗号隔开))", name = "type", dataType = "int", required = true) |
| | | public ResultUtil<String> getPage(Integer type){ |
| | | Page type1 = pageService.selectOne(new EntityWrapper<Page>() |
| | | .eq("type", type)); |
| | | if (type1 == null){ |
| | | return ResultUtil.success(""); |
| | | } |
| | | return ResultUtil.success(type1.getImg()); |
| | | } |
| | | |
| | | } |