Эх сурвалжийг харах

feat: 订单增加收货地址和快递状态

- OrderService.create 方法增加 addressId 参数,并根据 addressId 获取收货地址信息,填充订单字段。
- OrderController.create 方法修改,接收 addressId 参数并传递给 OrderService。
- BaseOrder 增加收件人、手机号、详细地址和快递状态字段。
- 设置订单的 express_status 字段为 0(未发货)。
- OrderControllerTest.http 相应修改,在创建订单的测试请求中添加 address_id 参数。
- BaseDeposit 添加 updateTime 字段和 update() 方法。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
skyfffire 1 өдөр өмнө
parent
commit
d5dad93c22

+ 19 - 0
src/main/java/common/model/base/BaseDeposit.java

@@ -73,6 +73,19 @@ public abstract class BaseDeposit<M extends BaseDeposit<M>> extends Model<M> imp
 	public java.lang.Long getCreateTime() {
 		return getLong("create_time");
 	}
+	/**
+	 * 更新时间
+	 */
+	public void setUpdateTime(java.lang.Long updateTime) {
+		set("update_time", updateTime);
+	}
+	
+	/**
+	 * 更新时间
+	 */
+	public java.lang.Long getUpdateTime() {
+		return getLong("update_time");
+	}
 	/**
 	 * 通联订单号
 	 */
@@ -138,6 +151,12 @@ public abstract class BaseDeposit<M extends BaseDeposit<M>> extends Model<M> imp
 		
 		return super.save();
 	}
+	
+	public boolean update() {
+		set("update_time", System.currentTimeMillis());
+		
+		return super.update();
+	}
 
 	public boolean delete() {
 		set("is_deleted", 1);

+ 82 - 2
src/main/java/common/model/base/BaseOrder.java

@@ -165,14 +165,14 @@ public abstract class BaseOrder<M extends BaseOrder<M>> extends Model<M> impleme
 		return getLong("pay_time");
 	}
 	/**
-	 * 交付状态:0=未交付, 1=已交付, 2=交付失败 (针对实物发货或链上确权转移)
+	 * 交付状态:0=未交付, 1=已交付, 2=交付失败 (针对链上确权转移)
 	 */
 	public void setDeliveryStatus(java.lang.Integer deliveryStatus) {
 		set("delivery_status", deliveryStatus);
 	}
 	
 	/**
-	 * 交付状态:0=未交付, 1=已交付, 2=交付失败 (针对实物发货或链上确权转移)
+	 * 交付状态:0=未交付, 1=已交付, 2=交付失败 (针对链上确权转移)
 	 */
 	public java.lang.Integer getDeliveryStatus() {
 		return getInt("delivery_status");
@@ -307,6 +307,86 @@ public abstract class BaseOrder<M extends BaseOrder<M>> extends Model<M> impleme
 	public java.lang.Long getClosedTime() {
 		return getLong("closed_time");
 	}
+    
+	/**
+	 * 收件人
+	 */
+	public void setRecipientName(java.lang.String recipientName) {
+		set("recipient_name", recipientName);
+	}
+	
+	/**
+	 * 收件人
+	 */
+	public java.lang.String getRecipientName() {
+		return getStr("recipient_name");
+	}
+	/**
+	 * 收件手机号
+	 */
+	public void setPhoneNumber(java.lang.String phoneNumber) {
+		set("phone_number", phoneNumber);
+	}
+	
+	/**
+	 * 收件手机号
+	 */
+	public java.lang.String getPhoneNumber() {
+		return getStr("phone_number");
+	}
+	/**
+	 * 收件详细地址
+	 */
+	public void setDetailedAddress(java.lang.String detailedAddress) {
+		set("detailed_address", detailedAddress);
+	}
+	
+	/**
+	 * 收件详细地址
+	 */
+	public java.lang.String getDetailedAddress() {
+		return getStr("detailed_address");
+	}
+	/**
+	 * 收件快递单号
+	 */
+	public void setExpressSn(java.lang.String expressSn) {
+		set("express_sn", expressSn);
+	}
+	
+	/**
+	 * 收件快递单号
+	 */
+	public java.lang.String getExpressSn() {
+		return getStr("express_sn");
+	}
+	/**
+	 * 发货快递商家(如圆通、中通、等)
+	 */
+	public void setExpress(java.lang.String express) {
+		set("express", express);
+	}
+	
+	/**
+	 * 发货快递商家(如圆通、中通、等)
+	 */
+	public java.lang.String getExpress() {
+		return getStr("express");
+	}
+	/**
+	 * 发货状态(0未发货、1已发货)
+	 */
+	public void setExpressStatus(java.lang.Integer expressStatus) {
+		set("express_status", expressStatus);
+	}
+	
+	/**
+	 * 发货状态(0未发货、1已发货)
+	 */
+	public java.lang.Integer getExpressStatus() {
+		return getInt("express_status");
+	}
+    
 	/**
 	 * 订单创建时间戳
 	 */

+ 14 - 9
src/main/java/modules/order/OrderController.java

@@ -32,39 +32,44 @@ public class OrderController extends MyController {
      * 创建订单调用的接口,会检查库存什么的
      */
     @Before(LoginInterceptor.class)
-    @EmptyInterface({"nftt_id"})
+    @EmptyInterface({"nftt_id", "address_id"})
     public void create() {
         // --- 从 JSON 请求体中获取参数 ---
         JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
         Integer nfttId;
+        Integer addressId;
         // nfttId
         try {
             nfttId = requestBodyJson.getInteger("nftt_id");
+            addressId = requestBodyJson.getInteger("address_id");
         } catch (Exception e) {
-            renderJson(MyRet.fail("你传入的 nftt_id 有些问题:" + e.getMessage()).setData(requestBodyJson));
-
+            renderJson(MyRet.fail("你传入的参数有些问题:" + e.getMessage()).setData(requestBodyJson));
             return;
         }
         if (nfttId == null) {
-            renderJson(MyRet.fail("id(nftt_id) 有问题"));
+            renderJson(MyRet.fail("nftt_id 有问题"));
             return;
         }
-        
+        if (addressId == null) {
+            renderJson(MyRet.fail("address_id 有问题"));
+            return;
+        }
+
         User user = userService.findUserByMobileNumber(getSessionAttr("mobile_number"));
-        
+
         // 先判断实名认证过没过
         // if (StrKit.isBlank(user.getHygWorkerId())) {
         //     renderJson(MyRet.fail("请先进行实名认证").setCode(MyRet.CODE_NO_AUTH));
         //     return;
         // }
-        
+
         // 获取nftt
         Nftt nftt = Nftt.dao.findById(nfttId);
         if (nftt == null) {
             renderJson(MyRet.fail("nftt不存在"));
             return;
         }
-        
+
         // 过了之后判断当前是预售阶段还是正式开售阶段
         // 判断是否到了预售阶段
         long now = System.currentTimeMillis();
@@ -74,7 +79,7 @@ public class OrderController extends MyController {
         }
         int orderType = now > nftt.getBuyingStartTime() ? 1 : 0;
         // 执行抢购操作
-        renderJson(service.create(nfttId.longValue(), user.getId(), orderType));
+        renderJson(service.create(nfttId.longValue(), user.getId(), orderType, addressId));
     }
 
     /**

+ 17 - 5
src/main/java/modules/order/OrderService.java

@@ -5,13 +5,11 @@ import com.jfinal.aop.Inject;
 import com.jfinal.kit.StrKit;
 import com.jfinal.plugin.activerecord.Db;
 import com.jfinal.plugin.activerecord.Record;
-import common.model.BalanceLog;
-import common.model.Order;
-import common.model.OrderLog;
-import common.model.User;
+import common.model.*;
 import common.utils.http.MyRet;
 import modules.nftt.NfttService;
 import modules.deposit.DepositService;
+import modules.address.AddressService; // 导入 AddressService
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -25,12 +23,15 @@ public class OrderService {
 
     @Inject
     DepositService depositService;
+
+    @Inject
+    AddressService addressService; // 注入 AddressService
     
     public String hello() {
         return "Hello order";
     }
     
-    public MyRet create(long nfttId, long userId, int orderType) {
+    public MyRet create(long nfttId, long userId, int orderType, int addressId) {
         float quantity = 1;
         
         try {
@@ -49,6 +50,13 @@ public class OrderService {
                 float unitPrice = item.getFloat("price");
                 float totalPrice = unitPrice * quantity;
 
+                // 获取收件地址信息
+                Address address = addressService.findById(addressId, userId);
+                if (address == null) {
+                    throw new RuntimeException("收件地址不存在或不属于当前用户");
+                }
+
+
                 // 判断用户余额
                 User user = User.dao.findById(userId);
                 if (user.getBalance() < totalPrice) {
@@ -98,6 +106,10 @@ public class OrderService {
                 // 相关时间戳
                 order.set("create_time", System.currentTimeMillis());
                 order.set("update_time", System.currentTimeMillis());
+                order.set("recipient_name", address.getRecipientName());
+                order.set("phone_number", address.getPhoneNumber());
+                order.set("detailed_address", address.getDetailedAddress());
+                order.set("express_status", 0); // 默认未发货
                 order.set("is_deleted", 0);
                 
                 if (!order.save()) {

+ 1 - 1
src/test/rest/DepositControllerTest.http

@@ -20,7 +20,7 @@ Content-Type: application/json
 dl-token: {{dl_token_var}}
 
 {
-  "tl_order_no": "DLTBH_TL_1762483249394_10003"
+  "tl_order_no": "DLTBH_TL_176248324931_10003"
 }
 
 ### 获取用户自己的充值记录列表

+ 2 - 1
src/test/rest/OrderControllerTest.http

@@ -8,7 +8,8 @@ Content-Type: application/json
 dl-token: {{dl_token_var}}
 
 {
-  "nftt_id": 10000
+  "nftt_id": 10000,
+  "address_id": 1
 }
 
 ### 用户取消订单