From b5ead35c1d955f2a0e2e10da79254860d0ba95e9 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 23 五月 2025 14:50:27 +0800 Subject: [PATCH] 大屏接口bug修改 --- ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java | 191 ++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 171 insertions(+), 20 deletions(-) diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java index 419a098..5373775 100644 --- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java +++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java @@ -7,30 +7,33 @@ import com.ruoyi.admin.api.feignClient.AdminClient; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.RedisConstants; +import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.GlobalException; import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.vo.AddressDto; +import com.ruoyi.common.core.vo.UserDto; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.system.api.model.LoginUserInfo; -import com.ruoyi.user.entity.RecoveryClassify; -import com.ruoyi.user.entity.RecoveryServe; -import com.ruoyi.user.entity.User; +import com.ruoyi.user.entity.*; import com.ruoyi.user.request.LoginPhoneRequest; -import com.ruoyi.user.service.RecoveryClassifyService; -import com.ruoyi.user.service.RecoveryServeService; -import com.ruoyi.user.service.UserService; +import com.ruoyi.user.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * <p> @@ -57,6 +60,35 @@ private RecoveryClassifyService recoveryClassifyService; @Resource private RecoveryServeService recoveryServeService; + @Resource + private UserRecipientService userRecipientService; + + /** + * 用户端默认头像 + */ + @Value("${default.profilePicture}") + private String profilePicture; + + /** + * 解密用户敏感数据 + * + * @param encryptedData 明文,加密数据 + * @param iv 加密算法的初始向量 + * @param code 用户允许登录后,回调内容会带上 code(有效期五分钟),开发者需要将 code 发送到开发者服务器后台,使用code 换取 session_key api,将 code 换成 openid 和 session_key + * @return 登录信息 + */ + @ApiOperation("微信授权一键登录") + @GetMapping("/wxAuthorize") + @ApiImplicitParams({ + @ApiImplicitParam(value = "用户允许登录后回调内容code", name = "code", dataType = "String", required = true), + @ApiImplicitParam(value = "明文,加密数据", name = "encryptedData", dataType = "String", required = true), + @ApiImplicitParam(value = "加密算法的初始向量", name = "iv", dataType = "String", required = true) + }) + public R<Map<String, Object>> decodeUserInfo(@RequestParam("code") String code, + @RequestParam("encryptedData") String encryptedData, + @RequestParam("iv") String iv) { + return R.ok(userService.decodeUserInfo(code, encryptedData, iv)); + } /** * 用户端-获取微信openId @@ -65,7 +97,7 @@ */ @ApiOperation(value = "获取微信openId", tags = {"用户端-登录"}) @PostMapping(value = "/decodeOpenid") - public R<String> decodeOpenid(HttpServletResponse response, @RequestParam String code) { + public R<String> decodeOpenid(HttpServletResponse response, String code) { return userService.decodeOpenid(response, code); } @@ -84,13 +116,13 @@ // 手机验证码校验获取缓存验证码 Object phoneCodeRedis = redisService.getCacheObject(RedisConstants.USER_LOGIN_PHONE_CODE + phone); if (null == phoneCodeRedis) { - return R.errorCode("登录失败,验证码已过期!"); + return R.errorCode("验证码错误!"); } else { // redis 验证码的value 为 code:时间戳 String rCodeAndTime = String.valueOf(phoneCodeRedis); String rCode = rCodeAndTime.split(":")[0]; if (!rCode.equalsIgnoreCase(phoneCode)) { - return R.errorCode("登录失败,验证码无效!"); + return R.errorCode("验证码错误!"); } } } @@ -99,14 +131,15 @@ .eq(User::getIsDelete, 0).one(); if (null != user) { if (!Constants.ONE.equals(user.getState())) { - return R.notEnabled("登录失败,当前账号未启用!"); + return R.notEnabled("账号已被禁用,请联系平台管理员。"); } } else { user = new User(); // 随机编号 user.setUserNo(String.format(Constants.USER_NO_PRE, RandomUtil.randomNumbers(Constants.EIGHT))); user.setState(Constants.ONE); - user.setNickname(phone); + user.setProfilePicture(profilePicture); + user.setNickname(String.format(Constants.USER_NO_PRE, StringUtils.getCharAndNum(Constants.SIX))); user.setPhone(phone); user.setCity(loginPhoneRequest.getCity()); user.setOpenId(loginPhoneRequest.getOpenId()); @@ -130,13 +163,17 @@ @ApiOperation(value = "用户注册协议/用户隐私协议", tags = {"用户端-登录"}) @GetMapping(value = "/registerOrAgreement") @ApiImplicitParams({ - @ApiImplicitParam(value = "0:用户注册协议、1:用户隐私协议", name = "type", dataType = "Integer", required = true) + @ApiImplicitParam(value = "0:用户注册协议、1:用户隐私协议;3:服务规则管理", name = "type", dataType = "Integer", required = true) }) - public R<Agreement> recoverySearch(@RequestParam Integer type) { - if (!Constants.ZERO.equals(type) || !Constants.ONE.equals(type)) { + public R<Agreement> registerOrAgreement(@RequestParam Integer type) { + if (!Constants.ZERO.equals(type) && !Constants.ONE.equals(type) && !Constants.THREE.equals(type)) { throw new GlobalException("获取类型异常!"); } - return R.ok(adminClient.dataInfo(type).getData()); + R<Agreement> r = adminClient.agreementPolicy(type); + if (500 == r.getCode()) { + return R.fail(r.getMsg()); + } + return R.ok(r.getData()); } /** @@ -145,7 +182,29 @@ @ApiOperation(value = "轮播图列表", tags = {"用户端-首页"}) @GetMapping(value = "/banner") public R<List<Rotate>> banner() { - return R.ok(adminClient.bannerList().getData()); + R<List<Rotate>> r = adminClient.bannerList(); + List<Rotate> data = r.getData(); + if (null == data) { + return R.fail(r.getMsg()); + } + for (Rotate datum : data) { + RecoveryServe recoveryServe = recoveryServeService.lambdaQuery() + .eq(RecoveryServe::getId, datum.getRotateServeId()).one(); + if (null != recoveryServe) { + Integer classifyId = recoveryServe.getClassifyId(); + RecoveryClassify classify = recoveryClassifyService.lambdaQuery() + .eq(RecoveryClassify::getId, classifyId).one(); + if (null != classify) { + String supClassify = classify.getSupClassify(); + if (Constants.RECOVERY.equals(supClassify)) { + datum.setType(Constants.ONE); + } else { + datum.setType(Constants.ZERO); + } + } + } + } + return R.ok(data); } /** @@ -155,6 +214,15 @@ @GetMapping(value = "/notice") public R<List<Notices>> notice() { return R.ok(adminClient.noticesList().getData()); + } + + /** + * 用户端-通知公告详情 + */ + @ApiOperation(value = "通知公告详情", tags = {"用户端-首页"}) + @GetMapping(value = "/noticeDetail") + public R<Notices> notice(@RequestParam Integer id) { + return R.ok(adminClient.noticesDetail(id).getData()); } /** @@ -182,7 +250,8 @@ @ApiOperation(value = "首页回收分类推荐", tags = {"用户端-首页"}) public R<List<RecoveryClassify>> recommend() { return R.ok(recoveryClassifyService.lambdaQuery().eq(RecoveryClassify::getIsRecommend, Constants.ONE) - .eq(RecoveryClassify::getIsDelete, 0).orderByAsc(RecoveryClassify::getSort).list()); + .eq(RecoveryClassify::getIsDelete, 0).orderByDesc(RecoveryClassify::getSort) + .orderByDesc(RecoveryClassify::getCreateTime).list()); } /** @@ -196,10 +265,62 @@ public R<List<RecoveryServe>> recoverySearch(@RequestParam String keyword) { LambdaQueryChainWrapper<RecoveryServe> wrapper = recoveryServeService.lambdaQuery() .eq(RecoveryServe::getIsDelete, 0) - .orderByAsc(RecoveryServe::getSort); - wrapper = StringUtils.isNotBlank(keyword) ? wrapper.like(RecoveryServe::getServeName, keyword) : wrapper; - return R.ok(wrapper.list()); + .orderByDesc(RecoveryServe::getSort); + wrapper = null != keyword && !"".equals(keyword.trim()) ? + wrapper.like(RecoveryServe::getServeName, keyword) : wrapper; + List<RecoveryServe> serveList = wrapper.orderByDesc(RecoveryServe::getCreateTime).list(); + for (RecoveryServe recoveryServe : serveList) { + RecoveryClassify classify = recoveryClassifyService.lambdaQuery() + .eq(RecoveryClassify::getId, recoveryServe.getClassifyId()).one(); + if (null != classify) { + if (Constants.RECOVERY.equals(classify.getSupClassify())) { + recoveryServe.setType(Constants.ONE); + } else { + recoveryServe.setType(Constants.ZERO); + } + } + } + return R.ok(serveList); } + + + @PostMapping(value = "/getUser") + public R<UserDto> updateWithdrawalState(@RequestParam("userId") Integer userId) { + + User byId = userService.getById(userId); + UserDto userDto = new UserDto(); + BeanUtils.copyProperties(byId,userDto); + return R.ok(userDto); + + } + +// @ApiOperation(value = "订单列表-更改订单提现状态", tags = {"后台-订单管理"}) + @PostMapping(value = "/getCityCode") + public R<AddressDto> getCityCode(@RequestParam("addressId") Integer addressId) { + UserRecipient byId = userRecipientService.getById(addressId); + AddressDto userDto = new AddressDto(); + userDto.setCityCode(byId.getCityCode()); + userDto.setCity(byId.getCity()); + userDto.setName(byId.getName()); + userDto.setDetail(byId.getAddressDetail()); + return R.ok(userDto); + + } + + + @Resource + private RecoveryServePriceService recoveryServePriceService; + + @PostMapping(value = "/getServePrice") + public R<BigDecimal> getServePrice(@RequestParam("serveId") Integer serveId, @RequestParam("cityCode") String cityCode) { + RecoveryServePrice one = recoveryServePriceService.lambdaQuery().eq(RecoveryServePrice::getRecoveryServeId, serveId).eq(RecoveryServePrice::getCity, cityCode).eq(RecoveryServePrice::getIsDelete, 0).one(); + if (one==null){ + return R.ok(null); + } + return R.ok(one.getRecoveryPrice()); + + } + /** * 用户端-个人中心用户信息 @@ -215,4 +336,34 @@ .eq(User::getIsDelete, 0).one()); } + /** + * 用户端-修改头像&昵称 + */ + @ApiOperation(value = "修改头像&昵称", tags = {"用户端-个人中心"}) + @GetMapping(value = "/updateInfo") + public R<Boolean> updateInfo(@RequestParam String picture, @RequestParam String nickname) { + LoginUserInfo loginUser = tokenService.getLoginUserByUser(); + if (null == loginUser) { + return R.loginExpire("登录失效!"); + } + return R.ok(userService.lambdaUpdate().eq(User::getId, loginUser.getUserid()) + .set(User::getProfilePicture, picture) + .set(User::getNickname, nickname).update()); + } + + /** + * 用户端-修改用户定位城市 + */ + @ApiOperation(value = "修改用户定位城市", tags = {"用户端-个人中心"}) + @GetMapping(value = "/updateCity") + public R<Boolean> updateCity(@RequestParam String city, @RequestParam String cityCode) { + LoginUserInfo loginUser = tokenService.getLoginUserByUser(); + if (null == loginUser) { + return R.loginExpire("登录失效!"); + } + return R.ok(userService.lambdaUpdate().eq(User::getId, loginUser.getUserid()) + .set(User::getCity, city) + .set(User::getCityCode, cityCode).update()); + } + } -- Gitblit v1.7.1