Browse Source

feat:用户修改手机号

zhangwei 1 week ago
parent
commit
dcf4203192
28 changed files with 575 additions and 95 deletions
  1. 9 0
      edu-travel-adapter/edu-travel-adapter-order/pom.xml
  2. 15 0
      edu-travel-adapter/edu-travel-adapter-order/src/main/java/edu/travel/adapter/service/order/OrderAdapter.java
  3. 30 0
      edu-travel-adapter/edu-travel-adapter-order/src/main/java/edu/travel/adapter/service/order/OrderStatusAdapter.java
  4. 11 1
      edu-travel-adapter/edu-travel-adapter-order/src/main/java/edu/travel/adapter/service/order/ShopOrderLogAdapter.java
  5. 6 0
      edu-travel-adapter/edu-travel-adapter-tenant/src/main/java/edu/travel/adapter/service/tenant/TenantAdapter.java
  6. 5 0
      edu-travel-api/edu-travel-api-web/pom.xml
  7. 58 0
      edu-travel-api/edu-travel-api-web/src/main/java/edu/travel/controller/OrderStatusController.java
  8. 94 0
      edu-travel-api/edu-travel-api-web/src/main/java/edu/travel/controller/ShopOrderController.java
  9. 41 0
      edu-travel-api/edu-travel-api-web/src/main/java/edu/travel/controller/ShopOrderLogController.java
  10. 34 0
      edu-travel-api/edu-travel-api-web/src/main/java/edu/travel/controller/ShopUserController.java
  11. 12 0
      edu-travel-oauth/src/main/java/edu/travel/dto/UpdatePhoneNumberDto.java
  12. 29 3
      edu-travel-oauth/src/main/java/edu/travel/web/IndexController.java
  13. 22 0
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/dto/OrderStatusDto.java
  14. 24 0
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/order/OrderStatusDictiRemoteController.java
  15. 13 1
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/order/ShopOrderRemoteController.java
  16. 11 1
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/order/ShopOrderTypeChangeRemoteController.java
  17. 21 0
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/vo/OrderStatusVo.java
  18. 4 3
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/vo/ShowOrderInfoVo.java
  19. 16 0
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/dto/tenant/UpdatePhoneDto.java
  20. 5 0
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/tenant/TenantRemoteController.java
  21. 61 4
      edu-travel-service/edu-travel-service-order/src/main/java/edu/travel/order/controller/OrderStatusDictiController.java
  22. 6 0
      edu-travel-service/edu-travel-service-order/src/main/java/edu/travel/order/entity/ShopOrder.java
  23. 0 1
      edu-travel-service/edu-travel-service-order/src/main/java/edu/travel/order/service/ShopOrderService.java
  24. 11 3
      edu-travel-service/edu-travel-service-order/src/main/java/edu/travel/order/service/impl/ShopOrderServiceImpl.java
  25. 0 38
      edu-travel-service/edu-travel-service-order/src/main/java/edu/travel/order/utils/RedisUtil.java
  26. 0 38
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/utils/RedisUtil.java
  27. 14 2
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/utils/TokenData.java
  28. 23 0
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/TenantController.java

+ 9 - 0
edu-travel-adapter/edu-travel-adapter-order/pom.xml

@@ -37,5 +37,14 @@
             <artifactId>edu-travel-common-adapter</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+        </dependency>
+
     </dependencies>
 </project>

+ 15 - 0
edu-travel-adapter/edu-travel-adapter-order/src/main/java/edu/travel/adapter/service/order/OrderAdapter.java

@@ -1,12 +1,17 @@
 package edu.travel.adapter.service.order;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.adapter.annotation.AdapterAnnotation;
 import edu.travel.remote.dto.AddOrderDto;
+import edu.travel.remote.dto.GetOrderItemInfoByOrderNumDto;
+import edu.travel.remote.dto.ShowOrderInfoDto;
 import edu.travel.remote.order.ShopOrderRemoteController;
+import edu.travel.remote.vo.OrderItemVo;
 import edu.travel.remote.vo.ShopOrderVo;
 import edu.travel.remote.vo.ShowOrderInfoVo;
 import edu.travel.rpc.RPCBaseResponse;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.openfeign.SpringQueryMap;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -33,4 +38,14 @@ public class OrderAdapter {
     public RPCBaseResponse<ShopOrderVo> getFormId(String orderId) {
         return shopOrderRemoteController.getFormId(orderId);
     }
+    @AdapterAnnotation
+    public RPCBaseResponse<Page<ShowOrderInfoVo>> showOrderInfo(ShowOrderInfoDto params){
+        return shopOrderRemoteController.showOrderInfo(params);
+    }
+    @AdapterAnnotation
+    public RPCBaseResponse<Page<OrderItemVo>> getOrderItemInfo(GetOrderItemInfoByOrderNumDto params){
+        return shopOrderRemoteController.getOrderItemInfo(params);
+    }
+
+
 }

+ 30 - 0
edu-travel-adapter/edu-travel-adapter-order/src/main/java/edu/travel/adapter/service/order/OrderStatusAdapter.java

@@ -0,0 +1,30 @@
+package edu.travel.adapter.service.order;
+
+import edu.travel.adapter.annotation.AdapterAnnotation;
+import edu.travel.remote.dto.OrderStatusDto;
+import edu.travel.remote.order.OrderStatusDictiRemoteController;
+import edu.travel.remote.vo.OrderStatusVo;
+import edu.travel.rpc.RPCBaseResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class OrderStatusAdapter {
+    @Autowired
+    private OrderStatusDictiRemoteController orderStatusDictiRemoteController;
+    @AdapterAnnotation
+    public RPCBaseResponse<List<OrderStatusVo>> list(){
+        return orderStatusDictiRemoteController.list();
+    }
+    @AdapterAnnotation
+    public RPCBaseResponse<Void> saveOrUpdate(OrderStatusDto dto){
+        return orderStatusDictiRemoteController.saveOrUpdate(dto);
+    }
+    @AdapterAnnotation
+    public RPCBaseResponse<Void> remove(OrderStatusDto dto){
+        return orderStatusDictiRemoteController.remove(dto);
+    }
+
+}

+ 11 - 1
edu-travel-adapter/edu-travel-adapter-order/src/main/java/edu/travel/adapter/service/order/ShopOrderLogAdapter.java

@@ -1,17 +1,27 @@
 package edu.travel.adapter.service.order;
 
+import edu.travel.adapter.annotation.AdapterAnnotation;
 import edu.travel.remote.dto.AddOrderLogDto;
 import edu.travel.remote.order.ShopOrderTypeChangeRemoteController;
+import edu.travel.remote.vo.OrderStateVo;
 import edu.travel.rpc.RPCBaseResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
 
 @Component
 public class ShopOrderLogAdapter {
     @Autowired
     private ShopOrderTypeChangeRemoteController shopOrderTypeChangeRemoteController;
-
+    @AdapterAnnotation
     public RPCBaseResponse<Void> addOrderLog(AddOrderLogDto params) {
         return shopOrderTypeChangeRemoteController.addOrderLog(params);
     }
+    @AdapterAnnotation
+    public RPCBaseResponse<List<OrderStateVo>> getOrderStateByOrderNum(String orderNum){
+        return shopOrderTypeChangeRemoteController.getOrderStateByOrderNum(orderNum);
+    }
+
 }

+ 6 - 0
edu-travel-adapter/edu-travel-adapter-tenant/src/main/java/edu/travel/adapter/service/tenant/TenantAdapter.java

@@ -1,12 +1,14 @@
 package edu.travel.adapter.service.tenant;
 
 import edu.travel.adapter.annotation.AdapterAnnotation;
+import edu.travel.remote.feign.mode.dto.tenant.UpdatePhoneDto;
 import edu.travel.remote.feign.mode.vo.tenant.EduTenantVo;
 import edu.travel.remote.feign.mode.vo.tenant.SysRoleVo;
 import edu.travel.resp.BaseResponse;
 import edu.travel.rpc.RPCBaseResponse;
 import edu.travel.tenant.TenantRemoteController;
 import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -39,4 +41,8 @@ public class TenantAdapter {
     public RPCBaseResponse<List<EduTenantVo>> getTenantByIds(Set<String> id) {
         return tenantRemoteController.getTenantByIds(id);
     }
+    @AdapterAnnotation
+    public RPCBaseResponse<Void> updatePhoneNumber(UpdatePhoneDto dto){
+        return tenantRemoteController.updatePhoneNumber(dto);
+    }
 }

+ 5 - 0
edu-travel-api/edu-travel-api-web/pom.xml

@@ -147,6 +147,11 @@
             <artifactId>edu-travel-adapter-country</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-adapter-tenant</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
     <profiles>
         <profile>

+ 58 - 0
edu-travel-api/edu-travel-api-web/src/main/java/edu/travel/controller/OrderStatusController.java

@@ -0,0 +1,58 @@
+package edu.travel.controller;
+
+import edu.travel.adapter.service.order.OrderStatusAdapter;
+import edu.travel.remote.dto.OrderStatusDto;
+import edu.travel.remote.vo.OrderStatusVo;
+import edu.travel.rpc.RPCBaseResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 订单状态字典(order_status_dicti)表控制层
+ *
+ * @author xxxxx
+ */
+@RestController
+@RequestMapping("/orderStatusDicti")
+public class OrderStatusController {
+    @Autowired
+    private OrderStatusAdapter orderStatusAdapter;
+    /**
+     *  列表
+     * @return {@link RPCBaseResponse }<{@link List }<{@link OrderStatusVo }>>
+     */
+
+    @GetMapping("/list")
+    public RPCBaseResponse<List<OrderStatusVo>> list() {
+        return orderStatusAdapter.list();
+    }
+
+    /**
+     *  新增或修改
+     * @param dto
+     * @return {@link RPCBaseResponse }<{@link Void }>
+     */
+
+    @GetMapping("/add")
+    public RPCBaseResponse<Void> saveOrUpdate(OrderStatusDto dto) {
+        return orderStatusAdapter.saveOrUpdate(dto);
+    }
+
+    /**
+     *  删除
+     * @param dto
+     * @return {@link RPCBaseResponse }<{@link Void }>
+     */
+
+    @GetMapping("/remove")
+    public RPCBaseResponse<Void> remove(OrderStatusDto dto) {
+        return orderStatusAdapter.remove(dto);
+    }
+
+
+
+}

+ 94 - 0
edu-travel-api/edu-travel-api-web/src/main/java/edu/travel/controller/ShopOrderController.java

@@ -0,0 +1,94 @@
+package edu.travel.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import edu.travel.adapter.service.order.OrderAdapter;
+import edu.travel.remote.dto.AddOrderDto;
+import edu.travel.remote.dto.GetOrderItemInfoByOrderNumDto;
+import edu.travel.remote.dto.ShowOrderInfoDto;
+import edu.travel.remote.vo.OrderItemVo;
+import edu.travel.remote.vo.ShopOrderVo;
+import edu.travel.remote.vo.ShowOrderInfoVo;
+import edu.travel.rpc.RPCBaseResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * 类功能描述:
+ *  商城订单
+ * @author 大春
+ * @date 2025/03/19
+ */
+
+@RestController
+@RequestMapping("/shopOrder")
+public class ShopOrderController {
+    @Autowired
+    private OrderAdapter orderAdapter;
+    /**
+     * 状态查询我的订单
+     *
+     * @param params
+     * @return {@link RPCBaseResponse }<{@link Page }<{@link ShowOrderInfoVo }>>
+     */
+    @GetMapping("/showOrderInfo")
+    public RPCBaseResponse<Page<ShowOrderInfoVo>> showOrderInfo(ShowOrderInfoDto params) {
+        return orderAdapter.showOrderInfo(params);
+    }
+
+    /**
+     * 下单生成订单
+     *
+     * @return {@link RPCBaseResponse }<{@link Void }>
+     */
+    @PostMapping("/addShopOrder")
+    public RPCBaseResponse<Void> addShopOrder(@RequestBody AddOrderDto params) {
+        return orderAdapter.addShopOrder(params);
+    }
+
+    /**
+     * 查询订单下的商品快照
+     *
+     * @param params 订单号
+     * @return {@link RPCBaseResponse }<{@link String }>
+     */
+
+    @GetMapping("/getOrderItemInfo")
+    public RPCBaseResponse<Page<OrderItemVo>> getOrderItemInfo(GetOrderItemInfoByOrderNumDto params) {
+        return orderAdapter.getOrderItemInfo(params);
+    }
+
+    /**
+     * 通过订单号查询订单详情
+     *
+     * @param orderNum 订单号
+     * @return {@link RPCBaseResponse }<{@link Page }<{@link ShowOrderInfoVo }>>
+     */
+    @GetMapping("/orderInfoByOrderNum")
+    public RPCBaseResponse<ShowOrderInfoVo> orderInfoByOrderNum(String orderNum) {
+        return orderAdapter.orderInfoByOrderNum(orderNum);
+    }
+
+    /**
+     * 修改订单状态
+     *
+     * @param orderNum 订单号 state 状态 OrderStateEnum
+     * @return {@link RPCBaseResponse }<{@link Page }<{@link ShowOrderInfoVo }>>
+     */
+    @GetMapping("/changeOrderState")
+    public RPCBaseResponse<Void> changeOrderState(String orderNum, String state) {
+        return orderAdapter.changeOrderState(orderNum, state);
+    }
+
+    /**
+     * 订单号查询订单
+     *
+     * @param id
+     * @return {@link RPCBaseResponse }<{@link ShopOrderVo }>
+     */
+
+    @GetMapping("/getFormId")
+    public RPCBaseResponse<ShopOrderVo> getFormId(@RequestParam("id") String id) {
+        return orderAdapter.getFormId(id);
+    }
+}

+ 41 - 0
edu-travel-api/edu-travel-api-web/src/main/java/edu/travel/controller/ShopOrderLogController.java

@@ -0,0 +1,41 @@
+package edu.travel.controller;
+
+import edu.travel.adapter.service.order.ShopOrderLogAdapter;
+import edu.travel.remote.dto.AddOrderLogDto;
+import edu.travel.remote.vo.OrderStateVo;
+import edu.travel.rpc.RPCBaseResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+import static edu.travel.rpc.RPCBaseResponse.success;
+
+@RestController
+@RequestMapping("/shopOrderTypeChange")
+public class ShopOrderLogController {
+    @Autowired
+    private ShopOrderLogAdapter shopOrderLogAdapter;
+
+    /**
+     * 新增订单日志
+     *
+     * @param params
+     * @return {@link RPCBaseResponse }<{@link Void }>
+     */
+    @PostMapping("/addOrderLog")
+    public RPCBaseResponse<Void> addOrderLog(@RequestBody AddOrderLogDto params) {
+        return shopOrderLogAdapter.addOrderLog(params);
+    }
+
+    /**
+     * 查询订单状态流程
+     *
+     * @param orderNum
+     * @return {@link RPCBaseResponse }<{@link Void }>
+     */
+    @GetMapping("/getOrderStateByOrderNum")
+    public RPCBaseResponse<List<OrderStateVo>> getOrderStateByOrderNum(@RequestParam("orderNum") String orderNum) {
+        return shopOrderLogAdapter.getOrderStateByOrderNum(orderNum);
+    }
+}

+ 34 - 0
edu-travel-api/edu-travel-api-web/src/main/java/edu/travel/controller/ShopUserController.java

@@ -0,0 +1,34 @@
+package edu.travel.controller;
+
+import edu.travel.adapter.service.tenant.TenantAdapter;
+import edu.travel.remote.feign.mode.dto.tenant.UpdatePhoneDto;
+import edu.travel.rpc.RPCBaseResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+
+@RestController
+@RequestMapping("/user")
+public class ShopUserController {
+
+    @Autowired
+    private TenantAdapter tenantAdapter;
+
+    /**
+     *  修改手机号
+     * @param dto
+     * @return {@link RPCBaseResponse }<{@link Void }>
+     */
+    @GetMapping("/updatePhoneNumber")
+//    @PreAuthorize("hasRole('超级管理员')")
+    public RPCBaseResponse<Void> updatePhoneNumber(@RequestBody UpdatePhoneDto dto) {
+        return tenantAdapter.updatePhoneNumber(dto);
+    }
+
+
+
+}

+ 12 - 0
edu-travel-oauth/src/main/java/edu/travel/dto/UpdatePhoneNumberDto.java

@@ -0,0 +1,12 @@
+package edu.travel.dto;
+
+import lombok.Data;
+
+@Data
+public class UpdatePhoneNumberDto {
+
+    private String phoneNumber;
+
+    private String tenantArea;
+
+}

+ 29 - 3
edu-travel-oauth/src/main/java/edu/travel/web/IndexController.java

@@ -2,17 +2,18 @@ package edu.travel.web;
 
 import cn.hutool.captcha.CaptchaUtil;
 import cn.hutool.captcha.CircleCaptcha;
+import cn.hutool.core.util.ObjectUtil;
 import edu.travel.dto.CheckImageDto;
+import edu.travel.dto.UpdatePhoneNumberDto;
 import edu.travel.resp.BaseResponse;
 import edu.travel.resp.PageResponse;
+import edu.travel.rpc.RPCBaseResponse;
 import edu.travel.utils.SMSUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
@@ -20,6 +21,8 @@ import java.io.IOException;
 import java.util.Random;
 import java.util.concurrent.TimeUnit;
 
+import static edu.travel.rpc.RPCBaseResponse.success;
+
 /**
  * IndexController 类。
  * <p>
@@ -85,4 +88,27 @@ public class IndexController {
         return PageResponse.out(HttpStatus.OK.value(), "发送成功");
     }
 
+    /**
+     *  修改手机号验证码
+     */
+    @PostMapping("/sendUpdatePhoneNumber")
+    public RPCBaseResponse<Void> sendUpdatePhoneNumber(@RequestBody UpdatePhoneNumberDto dto) {
+        String phoneNumber = dto.getPhoneNumber();
+        if (ObjectUtil.isEmpty(phoneNumber)) {
+            return RPCBaseResponse.error("手机号或验证码为空");
+        }
+        //发送短信
+        Object o = redisTemplate.opsForValue().get(phoneNumber + ":update");
+        if (o != null) return RPCBaseResponse.error("验证码已发送,请一分钟后重试");
+        //短信码
+        String smsCode = String.format("%06d", new Random().nextInt(999999));
+        redisTemplate.opsForValue().set(phoneNumber+ ":update", smsCode, 1, TimeUnit.MINUTES);
+        smsUtils.sendMsg(dto.getTenantArea(), phoneNumber, smsCode);
+        return success("发送成功");
+    }
+
+
+
+
+
 }

+ 22 - 0
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/dto/OrderStatusDto.java

@@ -0,0 +1,22 @@
+package edu.travel.remote.dto;
+
+import lombok.Data;
+
+@Data
+public class OrderStatusDto {
+    /**
+     * id
+     */
+    private String id;
+
+    /**
+     * 字典标签
+     */
+    private String dictLabel;
+
+    /**
+     * 字典键值
+     */
+    private String dictValue;
+
+}

+ 24 - 0
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/order/OrderStatusDictiRemoteController.java

@@ -0,0 +1,24 @@
+package edu.travel.remote.order;
+
+import edu.travel.remote.dto.OrderStatusDto;
+import edu.travel.remote.vo.OrderStatusVo;
+import edu.travel.rpc.RPCBaseResponse;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import java.util.List;
+
+@FeignClient(name = "order-dev", path = "/orderStatusDicti")
+public interface OrderStatusDictiRemoteController {
+    @GetMapping("/list")
+    public RPCBaseResponse<List<OrderStatusVo>> list();
+
+    @GetMapping("/add")
+    public RPCBaseResponse<Void> saveOrUpdate(@SpringQueryMap OrderStatusDto dto);
+
+    @GetMapping("/remove")
+    public RPCBaseResponse<Void> remove(@SpringQueryMap OrderStatusDto dto);
+
+
+}

+ 13 - 1
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/order/ShopOrderRemoteController.java

@@ -1,12 +1,17 @@
 package edu.travel.remote.order;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.remote.base.RemoteBaseController;
 import edu.travel.remote.dto.AddOrderDto;
+import edu.travel.remote.dto.GetOrderItemInfoByOrderNumDto;
 import edu.travel.remote.dto.ShopOrderDto;
+import edu.travel.remote.dto.ShowOrderInfoDto;
+import edu.travel.remote.vo.OrderItemVo;
 import edu.travel.remote.vo.ShopOrderVo;
 import edu.travel.remote.vo.ShowOrderInfoVo;
 import edu.travel.rpc.RPCBaseResponse;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -14,7 +19,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 @FeignClient(name = "order-dev", path = "/shopOrder")
 public interface ShopOrderRemoteController extends RemoteBaseController<ShopOrderVo, ShopOrderDto> {
     @PostMapping("/addShopOrder")
-    RPCBaseResponse<Void> addShopOrder(AddOrderDto params);
+    RPCBaseResponse<Void> addShopOrder(@SpringQueryMap AddOrderDto params);
 
     @GetMapping("/orderInfoByOrderNum")
     public RPCBaseResponse<ShowOrderInfoVo> orderInfoByOrderNum(@RequestParam("orderNum") String orderNum);
@@ -22,4 +27,11 @@ public interface ShopOrderRemoteController extends RemoteBaseController<ShopOrde
     @GetMapping("/changeOrderState")
     public RPCBaseResponse<Void> changeOrderState(@RequestParam("orderNum") String orderNum, @RequestParam("state") String state);
 
+
+    @GetMapping("/showOrderInfo")
+    public RPCBaseResponse<Page<ShowOrderInfoVo>> showOrderInfo(@SpringQueryMap ShowOrderInfoDto params);
+
+
+    @GetMapping("/getOrderItemInfo")
+    public RPCBaseResponse<Page<OrderItemVo>> getOrderItemInfo(@SpringQueryMap GetOrderItemInfoByOrderNumDto params);
 }

+ 11 - 1
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/order/ShopOrderTypeChangeRemoteController.java

@@ -1,13 +1,23 @@
 package edu.travel.remote.order;
 
 import edu.travel.remote.dto.AddOrderLogDto;
+import edu.travel.remote.vo.OrderStateVo;
 import edu.travel.rpc.RPCBaseResponse;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
 
 @FeignClient(name = "order-dev", path = "/shopOrderTypeChange")
 public interface ShopOrderTypeChangeRemoteController {
 
     @PostMapping("/addOrderLog")
-    public RPCBaseResponse<Void> addOrderLog(AddOrderLogDto params);
+    public RPCBaseResponse<Void> addOrderLog(@SpringQueryMap AddOrderLogDto params);
+
+    @GetMapping("/getOrderStateByOrderNum")
+    public RPCBaseResponse<List<OrderStateVo>> getOrderStateByOrderNum(@RequestParam("orderNum") String orderNum);
+
 }

+ 21 - 0
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/vo/OrderStatusVo.java

@@ -0,0 +1,21 @@
+package edu.travel.remote.vo;
+
+import lombok.Data;
+
+@Data
+public class OrderStatusVo {
+    /**
+     * id
+     */
+    private String id;
+
+    /**
+     * 字典标签
+     */
+    private String dictLabel;
+
+    /**
+     * 字典键值
+     */
+    private String dictValue;
+}

+ 4 - 3
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/vo/ShowOrderInfoVo.java

@@ -5,6 +5,7 @@ import lombok.Data;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 @Data
 public class ShowOrderInfoVo {
@@ -82,11 +83,11 @@ public class ShowOrderInfoVo {
      */
     private BigDecimal exchangeRate;
 
-    /**
-     * 0待付款, 1已下单, 2待发货,3待收货,4待评价,5已完成,6已取消
-     */
     private Integer status;
 
+    private String statusName;
+
+    private Map<String, Object> statusMap;
     /**
      * 支付时间
      */

+ 16 - 0
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/dto/tenant/UpdatePhoneDto.java

@@ -0,0 +1,16 @@
+package edu.travel.remote.feign.mode.dto.tenant;
+
+import lombok.Data;
+
+@Data
+public class UpdatePhoneDto {
+    /**
+     * 验证码
+     */
+    private String code;
+    /**
+     * 手机号
+     */
+    private String phoneNumber;
+
+}

+ 5 - 0
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/tenant/TenantRemoteController.java

@@ -4,6 +4,7 @@ import edu.travel.remote.base.RemoteBaseController;
 import edu.travel.remote.feign.mode.dto.tenant.AddOrUpdateTenantDto;
 import edu.travel.remote.feign.mode.dto.tenant.AssignRolesOrMenusDto;
 import edu.travel.remote.feign.mode.dto.tenant.EduTenantPageDto;
+import edu.travel.remote.feign.mode.dto.tenant.UpdatePhoneDto;
 import edu.travel.remote.feign.mode.vo.tenant.AdminInfoRoleMenuVo;
 import edu.travel.remote.feign.mode.vo.tenant.EduTenantVo;
 import edu.travel.remote.feign.mode.vo.tenant.SysRoleVo;
@@ -138,4 +139,8 @@ public interface TenantRemoteController extends RemoteBaseController<EduTenantVo
     @PostMapping("/disableTenantByIds")
 //    @PreAuthorize("hasRole('超级管理员')")
     public BaseResponse<Boolean> disableTenantByIds(@RequestBody List<Long> ids);
+
+    @PostMapping("/updatePhoneNumber")
+    public RPCBaseResponse<Void> updatePhoneNumber(@RequestBody UpdatePhoneDto dto);
+
 }

+ 61 - 4
edu-travel-service/edu-travel-service-order/src/main/java/edu/travel/order/controller/OrderStatusDictiController.java

@@ -1,22 +1,79 @@
 package edu.travel.order.controller;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import edu.travel.order.entity.OrderStatusDicti;
-import edu.travel.order.service.impl.OrderStatusDictiServiceImpl;
+import edu.travel.order.service.OrderStatusDictiService;
+import edu.travel.remote.dto.OrderStatusDto;
+import edu.travel.remote.order.OrderStatusDictiRemoteController;
+import edu.travel.remote.vo.OrderStatusVo;
+import edu.travel.rpc.RPCBaseResponse;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.List;
+
 /**
 * 订单状态字典(order_status_dicti)表控制层
 *
 * @author xxxxx
 */
 @RestController
-@RequestMapping("/order_status_dicti")
-public class OrderStatusDictiController {
+@RequestMapping("/orderStatusDicti")
+public class OrderStatusDictiController implements OrderStatusDictiRemoteController {
 /**
 * 服务对象
 */
     @Autowired
-    private OrderStatusDictiServiceImpl orderStatusDictiServiceImpl;
+    private OrderStatusDictiService orderStatusDictiService;
+
+    /**
+     *  列表
+     * @return {@link RPCBaseResponse }<{@link List }<{@link OrderStatusVo }>>
+     */
+
+    @GetMapping("/list")
+    public RPCBaseResponse<List<OrderStatusVo>> list() {
+        List<OrderStatusDicti> list = orderStatusDictiService.list();
+        List<OrderStatusVo> orderStatusVos = BeanUtil.copyToList(list, OrderStatusVo.class);
+        return RPCBaseResponse.success(orderStatusVos);
+    }
+
+    /**
+     *  新增或修改
+     * @param dto
+     * @return {@link RPCBaseResponse }<{@link Void }>
+     */
+
+    @GetMapping("/add")
+    public RPCBaseResponse<Void> saveOrUpdate(OrderStatusDto dto) {
+        OrderStatusDicti one = orderStatusDictiService.getById(dto.getId());
+        if(ObjectUtil.isEmpty(one)){
+            //新增
+            OrderStatusDicti bean = BeanUtil.toBean(dto, OrderStatusDicti.class);
+            bean.setId(null);
+            orderStatusDictiService.save(bean);
+            return RPCBaseResponse.success();
+        }
+        if(ObjectUtil.isNotEmpty(dto.getDictValue())){
+            one.setDictValue(dto.getDictValue());
+        }
+        if(ObjectUtil.isNotEmpty(dto.getDictLabel())){
+            one.setDictValue(dto.getDictLabel());
+        }
+        orderStatusDictiService.updateById(one);
+        return RPCBaseResponse.success();
+    }
+
+    /**
+     *  删除
+     * @param dto
+     * @return {@link RPCBaseResponse }<{@link Void }>
+     */
 
+    @GetMapping("/remove")
+    public RPCBaseResponse<Void> remove(OrderStatusDto dto) {
+        orderStatusDictiService.removeById(dto.getId());
+        return RPCBaseResponse.success();
+    }
 }

+ 6 - 0
edu-travel-service/edu-travel-service-order/src/main/java/edu/travel/order/entity/ShopOrder.java

@@ -4,13 +4,16 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import edu.travel.annotation.LinkOne;
 import edu.travel.entity.BaseEntity;
+import edu.travel.order.mapper.OrderStatusDictiMapper;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.Map;
 
 /**
  * 订单表
@@ -137,4 +140,7 @@ public class ShopOrder extends BaseEntity {
     @TableField(value = "global_coupon_id")
     private String globalCouponId;
 
+    @TableField(exist = false)
+    @LinkOne(linkField = "status", linkMapper = OrderStatusDictiMapper.class, linkPrimaryField = "id")
+    private Map<String, Object> statusMap;
 }

+ 0 - 1
edu-travel-service/edu-travel-service-order/src/main/java/edu/travel/order/service/ShopOrderService.java

@@ -11,7 +11,6 @@ import edu.travel.remote.vo.ShowOrderInfoVo;
 
 public interface ShopOrderService extends IService<ShopOrder> {
 
-
     Page<ShowOrderInfoVo> showOrderInfo(ShowOrderInfoDto params);
 
     void addShopOrder(AddOrderDto params);

+ 11 - 3
edu-travel-service/edu-travel-service-order/src/main/java/edu/travel/order/service/impl/ShopOrderServiceImpl.java

@@ -5,9 +5,9 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import edu.travel.exception.BaseException;
 import edu.travel.order.entity.ShopOrder;
 import edu.travel.order.entity.ShopOrderItem;
@@ -25,6 +25,7 @@ import edu.travel.remote.dto.ShowOrderInfoDto;
 import edu.travel.remote.vo.OrderItemVo;
 import edu.travel.remote.vo.ShopSnapshotVo;
 import edu.travel.remote.vo.ShowOrderInfoVo;
+import edu.travel.service.SysServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -34,7 +35,7 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 @Service
-public class ShopOrderServiceImpl extends ServiceImpl<ShopOrderMapper, ShopOrder> implements ShopOrderService {
+public class ShopOrderServiceImpl extends SysServiceImpl<ShopOrderMapper, ShopOrder> implements ShopOrderService {
     @Autowired
     private ShopOrderItemService shopOrderItemService;
     @Autowired
@@ -50,7 +51,8 @@ public class ShopOrderServiceImpl extends ServiceImpl<ShopOrderMapper, ShopOrder
         query.eq(ShopOrder::getUserId, userId);
         query.orderByDesc(ShopOrder::getCreateTime);
 
-        Page<ShopOrder> page = page(new Page<>(params.getCurrentPage(), params.getPageSize()), query);
+        Page<ShopOrder> objectPage = new Page<>(params.getCurrentPage(), params.getPageSize());
+        IPage<ShopOrder> page = super.getPageLink(query, objectPage);
         Page<ShowOrderInfoVo> pageEntity = PageUtil.toPageEntity(page, ShowOrderInfoVo.class);
         List<ShowOrderInfoVo> records = pageEntity.getRecords();
 
@@ -66,6 +68,12 @@ public class ShopOrderServiceImpl extends ServiceImpl<ShopOrderMapper, ShopOrder
                 list.stream().collect(Collectors.groupingBy(ShopOrderItem::getOrderId));
 
         for (ShowOrderInfoVo record : records) {
+            Map<String, Object> statusMap = record.getStatusMap();
+            if(ObjectUtil.isNotEmpty(statusMap)){
+                record.setStatusName(statusMap.get("dict_label").toString());
+            }
+
+
             List<ShopOrderItem> shopOrderItems = itemMap.get(record.getOrderNumber());
             if (ObjectUtil.isNotEmpty(shopOrderItems)) {
                 List<OrderItemVo> orderItemVos = BeanUtil.copyToList(shopOrderItems, OrderItemVo.class);

+ 0 - 38
edu-travel-service/edu-travel-service-order/src/main/java/edu/travel/order/utils/RedisUtil.java

@@ -1,38 +0,0 @@
-package edu.travel.order.utils;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.TimeUnit;
-
-@Component
-public class RedisUtil {
-    @Autowired
-    private StringRedisTemplate stringRedisTemplate;
-
-    /**
-     * 通过KEY 获取值
-     */
-    public String getString(String key) {
-        return stringRedisTemplate.opsForValue().get(key);
-    }
-
-    /**
-     * 设置KEY 和 VALUE
-     */
-    public void setString(String key, String value) {
-        stringRedisTemplate.opsForValue().set(key, value);
-    }
-
-    /**
-     * @param key      KEY
-     * @param value    值
-     * @param expire   过期时间
-     * @param timeUnit 时间单位
-     */
-    public void setString(String key, String value, long expire, TimeUnit timeUnit) {
-        stringRedisTemplate.opsForValue().set(key, value, expire, timeUnit);
-    }
-
-}

+ 0 - 38
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/utils/RedisUtil.java

@@ -1,38 +0,0 @@
-package edu.travel.tenant.utils;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.TimeUnit;
-
-@Component
-public class RedisUtil {
-    @Autowired
-    private StringRedisTemplate stringRedisTemplate;
-
-    /**
-     * 通过KEY 获取值
-     */
-    public String getString(String key) {
-        return stringRedisTemplate.opsForValue().get(key);
-    }
-
-    /**
-     * 设置KEY 和 VALUE
-     */
-    public void setString(String key, String value) {
-        stringRedisTemplate.opsForValue().set(key, value);
-    }
-
-    /**
-     * @param key      KEY
-     * @param value    值
-     * @param expire   过期时间
-     * @param timeUnit 时间单位
-     */
-    public void setString(String key, String value, long expire, TimeUnit timeUnit) {
-        stringRedisTemplate.opsForValue().set(key, value, expire, timeUnit);
-    }
-
-}

+ 14 - 2
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/utils/TokenData.java

@@ -1,5 +1,6 @@
 package edu.travel.tenant.utils;
 
+import cn.hutool.core.bean.BeanUtil;
 import edu.travel.entity.EduTenantPO;
 import org.springframework.security.core.context.SecurityContextHolder;
 
@@ -11,7 +12,18 @@ public class TokenData {
      * @return {@link String }
      */
     public static String getUserId() {
-        EduTenantPO principal = (EduTenantPO) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
-        return principal.getId().toString();
+        EduTenantPO user = getUser();
+        return user.getId().toString();
+    }
+
+    /**
+     * 获取用户ID
+     *
+     * @return {@link String }
+     */
+    public static EduTenantPO getUser() {
+        Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+        EduTenantPO bean = BeanUtil.toBean(principal, EduTenantPO.class);
+        return bean;
     }
 }

+ 23 - 0
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/TenantController.java

@@ -10,9 +10,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.adapter.service.upload.UploadAdapter;
+import edu.travel.entity.EduTenantPO;
 import edu.travel.remote.feign.mode.dto.tenant.AddOrUpdateTenantDto;
 import edu.travel.remote.feign.mode.dto.tenant.AssignRolesOrMenusDto;
 import edu.travel.remote.feign.mode.dto.tenant.EduTenantPageDto;
+import edu.travel.remote.feign.mode.dto.tenant.UpdatePhoneDto;
 import edu.travel.remote.feign.mode.vo.tenant.AdminInfoRoleMenuVo;
 import edu.travel.remote.feign.mode.vo.tenant.EduTenantVo;
 import edu.travel.remote.feign.mode.vo.tenant.MenuTreeVo;
@@ -29,9 +31,11 @@ import edu.travel.tenant.entity.SysUserRole;
 import edu.travel.tenant.service.ISysUserRoleService;
 import edu.travel.tenant.service.ITenantService;
 import edu.travel.tenant.utils.FIleUtil;
+import edu.travel.tenant.utils.TokenData;
 import edu.travel.web.BaseController;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -51,6 +55,25 @@ public class TenantController extends BaseController<EduTenant> implements Tenan
     private ISysUserRoleService sysUserRoleService;
     @Autowired
     private UploadAdapter uploadAdapter;
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+
+    @PostMapping("/updatePhoneNumber")
+//    @PreAuthorize("hasRole('超级管理员')")
+    public RPCBaseResponse<Void> updatePhoneNumber(@RequestBody UpdatePhoneDto dto) {
+        EduTenantPO user = TokenData.getUser();
+        //旧手机号
+        Object o = redisTemplate.opsForValue().get(dto.getPhoneNumber() + ":update");
+        if (ObjectUtil.isEmpty(o)||!dto.getCode().equals(o)){
+            return RPCBaseResponse.error("验证码错误");
+        }
+        EduTenant bean = BeanUtil.toBean(user, EduTenant.class);
+        bean.setTenantPhone(dto.getPhoneNumber());
+        tenantService.updateById(bean);
+        return success();
+    }
+
 
     @GetMapping("/getTenantByPhoneNumber")
 //    @PreAuthorize("hasRole('超级管理员')")