From 6e70ee2d0b73f70fe1140cc7d51c4e847d50aa51 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 17 四月 2025 10:54:26 +0800
Subject: [PATCH] 2.0迭代师傅订单列表
---
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java | 189 ++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 170 insertions(+), 19 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 2551710..1494421 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());
@@ -132,11 +165,15 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "0:用户注册协议、1:用户隐私协议", 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)) {
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::getOrder).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