浏览代码

用户收件地址相关模块

skyfffire 1 周之前
父节点
当前提交
cf7c693b2c

+ 2 - 0
src/main/java/common/jfinal/AppConfig.java

@@ -10,6 +10,7 @@ import common.interceptor.role.RoleInterceptor;
 import common.interceptor.ExceptionInterceptor;
 import common.interceptor.empty.EmptyInterceptor;
 import common.model._MappingKit;
+import modules.address.AddressController;
 import modules.deposit.DepositController;
 import modules.hello.HelloController;
 import modules.news.NewsController;
@@ -65,6 +66,7 @@ public class AppConfig extends JFinalConfig {
         routes.add("/news", NewsController.class);
         routes.add("/withdraw", WithdrawController.class);
         routes.add("/deposit", DepositController.class);
+        routes.add("/address", AddressController.class);
     }
 
     @Override

+ 12 - 0
src/main/java/common/model/Address.java

@@ -0,0 +1,12 @@
+package common.model;
+
+import common.model.base.BaseAddress;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class Address extends BaseAddress<Address> {
+	public static final Address dao = new Address().dao();
+}
+

+ 1 - 0
src/main/java/common/model/_MappingKit.java

@@ -16,6 +16,7 @@ import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
 public class _MappingKit {
 	
 	public static void mapping(ActiveRecordPlugin arp) {
+		arp.addMapping("t_address", "id", Address.class);
 		arp.addMapping("t_balance_log", "id", BalanceLog.class);
 		arp.addMapping("t_deposit", "id", Deposit.class);
 		arp.addMapping("t_news", "id", News.class);

+ 121 - 0
src/main/java/common/model/base/BaseAddress.java

@@ -0,0 +1,121 @@
+package common.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseAddress<M extends BaseAddress<M>> extends Model<M> implements IBean {
+	/**
+	 * 地址id
+	 */
+	public void setId(java.lang.Integer id) {
+		set("id", id);
+	}
+	
+	/**
+	 * 地址id
+	 */
+	public java.lang.Integer getId() {
+		return getInt("id");
+	}
+	/**
+	 * 所属user
+	 */
+	public void setUserId(java.lang.Integer userId) {
+		set("user_id", userId);
+	}
+	
+	/**
+	 * 所属user
+	 */
+	public java.lang.Integer getUserId() {
+		return getInt("user_id");
+	}
+	/**
+	 * 收货人姓名
+	 */
+	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");
+	}
+	/**
+	 * 是否为默认地址 0:否 1:是
+	 */
+	public void setIsDefault(java.lang.Integer isDefault) {
+		set("is_default", isDefault);
+	}
+	
+	/**
+	 * 是否为默认地址 0:否 1:是
+	 */
+	public java.lang.Integer getIsDefault() {
+		return getInt("is_default");
+	}
+	public void setCreateTime(java.lang.Long createTime) {
+		set("create_time", createTime);
+	}
+	
+	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");
+	}
+	
+	public boolean save() {
+		set("create_time", System.currentTimeMillis());
+		
+		return super.save();
+	}
+	
+	public boolean update() {
+		set("update_time", System.currentTimeMillis());
+		
+		return super.update();
+	}
+
+	public boolean delete() {
+		set("is_deleted", 1);
+
+		return super.update();
+	}
+}

+ 2 - 2
src/main/java/common/model/base/BaseNftt.java

@@ -35,7 +35,7 @@ public abstract class BaseNftt<M extends BaseNftt<M>> extends Model<M> implement
 		return getStr("name");
 	}
 	/**
-	 * 售价()
+	 * 售价(火花)
 
 	 */
 	public void setPrice(java.lang.Integer price) {
@@ -43,7 +43,7 @@ public abstract class BaseNftt<M extends BaseNftt<M>> extends Model<M> implement
 	}
 	
 	/**
-	 * 售价()
+	 * 售价(火花)
 
 	 */
 	public java.lang.Integer getPrice() {

+ 2 - 2
src/main/java/common/model/base/BaseUser.java

@@ -100,14 +100,14 @@ public abstract class BaseUser<M extends BaseUser<M>> extends Model<M> implement
 		return getInt("integral");
 	}
 	/**
-	 * 余额,
+	 * 余额,火花
 	 */
 	public void setBalance(java.lang.Float balance) {
 		set("balance", balance);
 	}
 	
 	/**
-	 * 余额,
+	 * 余额,火花
 	 */
 	public java.lang.Float getBalance() {
 		return getFloat("balance");

+ 2 - 2
src/main/java/common/model/base/BaseWithdraw.java

@@ -22,14 +22,14 @@ public abstract class BaseWithdraw<M extends BaseWithdraw<M>> extends Model<M> i
 		return getStr("withdraw_sn");
 	}
 	/**
-	 * 提现单位,1=1/分
+	 * 提现单位,1=1火花/分
 	 */
 	public void setAmount(java.lang.Float amount) {
 		set("amount", amount);
 	}
 	
 	/**
-	 * 提现单位,1=1/分
+	 * 提现单位,1=1火花/分
 	 */
 	public java.lang.Float getAmount() {
 		return getFloat("amount");

+ 136 - 0
src/main/java/modules/address/AddressController.java

@@ -0,0 +1,136 @@
+package modules.address;
+
+import com.alibaba.fastjson.JSONObject;
+import com.jfinal.aop.Before;
+import com.jfinal.aop.Inject;
+import common.interceptor.LoginInterceptor;
+import common.model.Address;
+import common.model.User;
+import common.utils.http.MyController;
+import common.utils.http.MyRet;
+import modules.user.UserService;
+
+import java.util.List;
+
+@Before(LoginInterceptor.class)
+public class AddressController extends MyController {
+
+    @Inject
+    private AddressService service;
+    @Inject
+    private UserService userService;
+
+    public void index() {
+        renderText("Hello, Address!");
+    }
+
+    /**
+     * 获取用户的收货地址列表
+     */
+    public void list() {
+        User user = userService.findUserByMobileNumber(getSessionAttr("mobile_number"));
+        List<Address> addresses = service.findByUserId(user.getId());
+        renderJson(MyRet.ok("获取成功").setData(addresses));
+    }
+
+    /**
+     * 获取单个收货地址详情
+     */
+    public void get() {
+        User user = userService.findUserByMobileNumber(getSessionAttr("mobile_number"));
+        JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
+        Integer addressId;
+        try {
+            addressId = requestBodyJson.getInteger("id");
+        } catch (Exception e) {
+            renderJson(MyRet.fail("你传入的 id 有些问题:" + e.getMessage()).setData(requestBodyJson));
+            return;
+        }
+        if (addressId == null) {
+            renderJson(MyRet.fail("id 不能为空"));
+            return;
+        }
+
+        Address address = service.findById(addressId, user.getId());
+        if (address == null) {
+            renderJson(MyRet.fail("地址不存在"));
+            return;
+        }
+        renderJson(MyRet.ok("获取成功").setData(address));
+    }
+
+    /**
+     * 新增或修改收货地址
+     */
+    public void save() {
+        User user = userService.findUserByMobileNumber(getSessionAttr("mobile_number"));
+        Address address = getModel(Address.class, "");
+        address.setUserId(user.getId().intValue());
+
+        if (address.getId() == null) {
+            // 新增
+            if (service.save(address)) {
+                renderJson(MyRet.ok("添加成功").setData(address));
+            } else {
+                renderJson(MyRet.fail("添加失败"));
+            }
+        } else {
+            // 修改
+            if (service.update(address)) {
+                renderJson(MyRet.ok("修改成功").setData(address));
+            } else {
+                renderJson(MyRet.fail("修改失败"));
+            }
+        }
+    }
+
+    /**
+     * 删除收货地址
+     */
+    public void delete() {
+        User user = userService.findUserByMobileNumber(getSessionAttr("mobile_number"));
+        JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
+        Integer addressId;
+        try {
+            addressId = requestBodyJson.getInteger("id");
+        } catch (Exception e) {
+            renderJson(MyRet.fail("你传入的 id 有些问题:" + e.getMessage()).setData(requestBodyJson));
+            return;
+        }
+        if (addressId == null) {
+            renderJson(MyRet.fail("id 不能为空"));
+            return;
+        }
+
+        if (service.delete(addressId, user.getId())) {
+            renderJson(MyRet.ok("删除成功"));
+        } else {
+            renderJson(MyRet.fail("删除失败"));
+        }
+    }
+
+    /**
+     * 设置默认地址
+     */
+    public void setDefault() {
+        User user = userService.findUserByMobileNumber(getSessionAttr("mobile_number"));
+        JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
+        Integer addressId;
+        try {
+            addressId = requestBodyJson.getInteger("id");
+        } catch (Exception e) {
+            renderJson(MyRet.fail("你传入的 id 有些问题:" + e.getMessage()).setData(requestBodyJson));
+            return;
+        }
+        if (addressId == null) {
+            renderJson(MyRet.fail("id 不能为空"));
+            return;
+        }
+
+        if (service.setDefault(addressId, user.getId())) {
+            renderJson(MyRet.ok("设置成功"));
+        } else {
+            renderJson(MyRet.fail("设置失败"));
+        }
+    }
+}

+ 49 - 0
src/main/java/modules/address/AddressService.java

@@ -0,0 +1,49 @@
+package modules.address;
+
+import com.jfinal.plugin.activerecord.Db;
+import common.model.Address;
+
+import java.util.List;
+
+public class AddressService {
+
+    private final Address dao = new Address().dao();
+
+    public List<Address> findByUserId(Long userId) {
+        return dao.find("select * from t_address where user_id = ? order by is_default desc, id desc", userId);
+    }
+
+    public Address findById(int id, Long userId) {
+        return dao.findFirst("select * from t_address where id = ? and user_id = ?", id, userId);
+    }
+
+    public boolean save(Address address) {
+        if (address.getIsDefault() == 1) {
+            // 如果将当前地址设为默认,则将该用户其他地址设为非默认
+            Db.update("update t_address set is_default = 0 where user_id = ?", address.getUserId());
+        }
+        return address.save();
+    }
+
+    public boolean update(Address address) {
+        if (address.getIsDefault() == 1) {
+            // 如果将当前地址设为默认,则将该用户其他地址设为非默认
+            Db.update("update t_address set is_default = 0 where user_id = ?", address.getUserId());
+        }
+        return address.update();
+    }
+
+    public boolean delete(int id, Long userId) {
+        return Db.update("delete from t_address where id = ? and user_id = ?", id, userId) > 0;
+    }
+
+    public boolean setDefault(int id, Long userId) {
+        // 开启事务
+        return Db.tx(() -> {
+            // 先将该用户所有地址设为非默认
+            Db.update("update t_address set is_default = 0 where user_id = ?", userId);
+            // 再将指定地址设为默认
+            return Db.update("update t_address set is_default = 1 where id = ? and user_id = ?", id, userId) > 0;
+        });
+    }
+}