Răsfoiți Sursa

7.27 日常开发

Mechrevo 1 an în urmă
părinte
comite
621f7ce8ae
37 a modificat fișierele cu 1976 adăugiri și 168 ștergeri
  1. 23 0
      sp-core/sp-api/src/main/java/com/pj/api/client/transport/TransportInterface.java
  2. 29 0
      sp-core/sp-api/src/main/java/com/pj/api/client/transport/TransportInterfaceFallback.java
  3. 1 0
      sp-core/sp-api/src/main/java/com/pj/api/consts/FeignConsts.java
  4. 7 1
      sp-core/sp-api/src/main/java/com/pj/api/consts/FeignFactory.java
  5. 359 0
      sp-core/sp-api/src/main/java/com/pj/api/dto/TbLogisticsDto.java
  6. 1 1
      sp-core/sp-base/src/main/java/com/pj/current/satoken/StpAPPUserUtil.java
  7. 25 0
      sp-core/sp-base/src/main/java/com/pj/enummj/AfterSaleApplyType.java
  8. 72 2
      sp-service/level-one-server/src/main/java/com/pj/tb_enterprise/MethodEnterpriseService.java
  9. 8 0
      sp-service/level-one-server/src/main/java/com/pj/tb_enterprise/TbEnterpriseAppController.java
  10. 33 0
      sp-service/level-one-server/src/main/java/com/pj/tb_enterprise/TbEnterpriseService.java
  11. 52 0
      sp-service/level-one-server/src/main/java/com/pj/tb_enterprise/vo/OrdersVo.java
  12. 12 4
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrder.java
  13. 7 1
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderMapper.xml
  14. 13 1
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderService.java
  15. 144 144
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderUtil.java
  16. 61 0
      sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/OrderAfterSaleAPPController.java
  17. 114 0
      sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSale.java
  18. 87 0
      sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSaleController.java
  19. 30 0
      sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSaleMapper.java
  20. 63 0
      sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSaleMapper.xml
  21. 83 0
      sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSaleService.java
  22. 27 0
      sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSaleUtil.java
  23. 90 0
      sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/param/AfterSaleParam.java
  24. 28 0
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/MethodPurchaserAddressService.java
  25. 63 0
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/PurchaserAddressAppController.java
  26. 95 0
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddress.java
  27. 85 0
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressController.java
  28. 30 0
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressMapper.java
  29. 52 0
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressMapper.xml
  30. 125 0
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressService.java
  31. 27 0
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressUtil.java
  32. 84 0
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/param/TbPurchaserAddressParam.java
  33. 1 5
      sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserController.java
  34. 10 3
      sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserService.java
  35. 3 0
      sp-service/sp-admin/src/main/java/com/pj/project/app_user/dto/RegisterDto.java
  36. 15 5
      sp-service/transport-server/src/main/java/com/pj/project/tb_logistics/TbLogisticsController.java
  37. 17 1
      sp-service/transport-server/src/main/java/com/pj/project/tb_logistics/TbLogisticsService.java

+ 23 - 0
sp-core/sp-api/src/main/java/com/pj/api/client/transport/TransportInterface.java

@@ -0,0 +1,23 @@
+package com.pj.api.client.transport;
+
+import com.pj.api.FeignInterceptor;
+import com.pj.api.client.admin.AdminInterfaceFallback;
+import com.pj.api.consts.FeignConsts;
+import com.pj.api.dto.TbLogisticsDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * @Author Mechrevo
+ * @Date 2023 07 27 17 02
+ **/
+@FeignClient(
+        name = FeignConsts.TRANSPORT_SERVER, 				// 服务名称
+        configuration = FeignInterceptor.class,		// 请求拦截器
+        fallbackFactory = AdminInterfaceFallback.class	// 服务降级
+)
+public interface TransportInterface {
+
+    @RequestMapping("/TbLogistics/rpc/selectByOrderId")
+    public TbLogisticsDto selectByOrderId(Long orderId);
+}

+ 29 - 0
sp-core/sp-api/src/main/java/com/pj/api/client/transport/TransportInterfaceFallback.java

@@ -0,0 +1,29 @@
+package com.pj.api.client.transport;
+
+import com.pj.api.client.admin.AdminInterfaceFallback;
+import com.pj.api.dto.TbLogisticsDto;
+import feign.hystrix.FallbackFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author Mechrevo
+ * @Date 2023 07 27 17 06
+ **/
+@Component
+public class TransportInterfaceFallback implements FallbackFactory<TransportInterface> {
+
+    private static final Logger log = LoggerFactory.getLogger(AdminInterfaceFallback.class);
+
+    @Override
+    public TransportInterface create(Throwable throwable) {
+        return new TransportInterface() {
+            @Override
+            public TbLogisticsDto selectByOrderId(Long orderId) {
+                log.error("触发降级熔断机制,id为:{}",orderId);
+                return null;
+            }
+        };
+    }
+}

+ 1 - 0
sp-core/sp-api/src/main/java/com/pj/api/consts/FeignConsts.java

@@ -8,6 +8,7 @@ public class FeignConsts {
 	 */
 	public static final String SP_HOME = "sp-home";
 	public static final String SP_ADMIN = "sp-admin";
+	public static final String TRANSPORT_SERVER = "transport-server";
 
 	
 	

+ 7 - 1
sp-core/sp-api/src/main/java/com/pj/api/consts/FeignFactory.java

@@ -1,6 +1,7 @@
 package com.pj.api.consts;
 
 import com.pj.api.client.admin.AdminInterface;
+import com.pj.api.client.transport.TransportInterface;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -32,7 +33,12 @@ public class FeignFactory {
 		FeignFactory.adminInterface = adminInterface;
 	}
 
-	
+	/**
+	 * 物流  通信接口
+	 */
+	public static TransportInterface transportInterface;
+	@Autowired
+	private void setTransportInterface(TransportInterface transportInterface){FeignFactory.transportInterface = transportInterface;}
 	
 	
 	

+ 359 - 0
sp-core/sp-api/src/main/java/com/pj/api/dto/TbLogisticsDto.java

@@ -0,0 +1,359 @@
+package com.pj.api.dto;
+
+
+/**
+ * Model: tb_logistics -- 物流表
+ * @author qzy 
+ */
+
+public class TbLogisticsDto{
+	public TbLogisticsDto(Long id, Long ordersId, String declarationNumber, Integer prepare, String prepareTime, Integer loading, String loadingTime, Integer delivery, String deliveryTime, Integer clearedCustom, String clearedCustomTime, Integer makeCargo, String makeCargoTime, Integer confirmReceipt, String confirmReceiptTime, Integer orderFinish, String createTime, String createBy, String createName, String updateTime, String updateBy, String updateName, Integer deleteStatus, Long levelOneOrderId) {
+		this.id = id;
+		this.ordersId = ordersId;
+		this.declarationNumber = declarationNumber;
+		this.prepare = prepare;
+		this.prepareTime = prepareTime;
+		this.loading = loading;
+		this.loadingTime = loadingTime;
+		this.delivery = delivery;
+		this.deliveryTime = deliveryTime;
+		this.clearedCustom = clearedCustom;
+		this.clearedCustomTime = clearedCustomTime;
+		this.makeCargo = makeCargo;
+		this.makeCargoTime = makeCargoTime;
+		this.confirmReceipt = confirmReceipt;
+		this.confirmReceiptTime = confirmReceiptTime;
+		this.orderFinish = orderFinish;
+		this.createTime = createTime;
+		this.createBy = createBy;
+		this.createName = createName;
+		this.updateTime = updateTime;
+		this.updateBy = updateBy;
+		this.updateName = updateName;
+		this.deleteStatus = deleteStatus;
+		this.levelOneOrderId = levelOneOrderId;
+	}
+
+	public TbLogisticsDto() {
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getOrdersId() {
+		return ordersId;
+	}
+
+	public void setOrdersId(Long ordersId) {
+		this.ordersId = ordersId;
+	}
+
+	public String getDeclarationNumber() {
+		return declarationNumber;
+	}
+
+	public void setDeclarationNumber(String declarationNumber) {
+		this.declarationNumber = declarationNumber;
+	}
+
+	public Integer getPrepare() {
+		return prepare;
+	}
+
+	public void setPrepare(Integer prepare) {
+		this.prepare = prepare;
+	}
+
+	public String getPrepareTime() {
+		return prepareTime;
+	}
+
+	public void setPrepareTime(String prepareTime) {
+		this.prepareTime = prepareTime;
+	}
+
+	public Integer getLoading() {
+		return loading;
+	}
+
+	public void setLoading(Integer loading) {
+		this.loading = loading;
+	}
+
+	public String getLoadingTime() {
+		return loadingTime;
+	}
+
+	public void setLoadingTime(String loadingTime) {
+		this.loadingTime = loadingTime;
+	}
+
+	public Integer getDelivery() {
+		return delivery;
+	}
+
+	public void setDelivery(Integer delivery) {
+		this.delivery = delivery;
+	}
+
+	public String getDeliveryTime() {
+		return deliveryTime;
+	}
+
+	public void setDeliveryTime(String deliveryTime) {
+		this.deliveryTime = deliveryTime;
+	}
+
+	public Integer getClearedCustom() {
+		return clearedCustom;
+	}
+
+	public void setClearedCustom(Integer clearedCustom) {
+		this.clearedCustom = clearedCustom;
+	}
+
+	public String getClearedCustomTime() {
+		return clearedCustomTime;
+	}
+
+	public void setClearedCustomTime(String clearedCustomTime) {
+		this.clearedCustomTime = clearedCustomTime;
+	}
+
+	public Integer getMakeCargo() {
+		return makeCargo;
+	}
+
+	public void setMakeCargo(Integer makeCargo) {
+		this.makeCargo = makeCargo;
+	}
+
+	public String getMakeCargoTime() {
+		return makeCargoTime;
+	}
+
+	public void setMakeCargoTime(String makeCargoTime) {
+		this.makeCargoTime = makeCargoTime;
+	}
+
+	public Integer getConfirmReceipt() {
+		return confirmReceipt;
+	}
+
+	public void setConfirmReceipt(Integer confirmReceipt) {
+		this.confirmReceipt = confirmReceipt;
+	}
+
+	public String getConfirmReceiptTime() {
+		return confirmReceiptTime;
+	}
+
+	public void setConfirmReceiptTime(String confirmReceiptTime) {
+		this.confirmReceiptTime = confirmReceiptTime;
+	}
+
+	public Integer getOrderFinish() {
+		return orderFinish;
+	}
+
+	public void setOrderFinish(Integer orderFinish) {
+		this.orderFinish = orderFinish;
+	}
+
+	public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getCreateBy() {
+		return createBy;
+	}
+
+	public void setCreateBy(String createBy) {
+		this.createBy = createBy;
+	}
+
+	public String getCreateName() {
+		return createName;
+	}
+
+	public void setCreateName(String createName) {
+		this.createName = createName;
+	}
+
+	public String getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(String updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public String getUpdateBy() {
+		return updateBy;
+	}
+
+	public void setUpdateBy(String updateBy) {
+		this.updateBy = updateBy;
+	}
+
+	public String getUpdateName() {
+		return updateName;
+	}
+
+	public void setUpdateName(String updateName) {
+		this.updateName = updateName;
+	}
+
+	public Integer getDeleteStatus() {
+		return deleteStatus;
+	}
+
+	public void setDeleteStatus(Integer deleteStatus) {
+		this.deleteStatus = deleteStatus;
+	}
+
+	public Long getLevelOneOrderId() {
+		return levelOneOrderId;
+	}
+
+	public void setLevelOneOrderId(Long levelOneOrderId) {
+		this.levelOneOrderId = levelOneOrderId;
+	}
+// ---------- 表中字段 ----------
+	/**
+	 * 物流表主键 
+	 */
+	private Long id;
+
+	/**
+	 * 订单表ID 
+	 */
+	private Long ordersId;	
+
+	/**
+	 * (预留字段) 申报订单号 
+	 */
+	private String declarationNumber;	
+
+	/**
+	 * 订单待确认(0=待确认,1=订单已确认,2=订单确认失败) 
+	 */
+	private Integer prepare;	
+
+	/**
+	 * 订单确认时间 
+	 */
+	private String prepareTime;	
+
+	/**
+	 * 待装货(0=待装货,1=已装货) 
+	 */
+	private Integer loading;	
+
+	/**
+	 * 已装货时间 
+	 */
+	private String loadingTime;	
+
+	/**
+	 * 发货(0=未发,1=已发) 
+	 */
+	private Integer delivery;	
+
+	/**
+	 * 发货时间 
+	 */
+	private String deliveryTime;	
+
+	/**
+	 * 已出海关(0=禁用,1=启用) 
+	 */
+	private Integer clearedCustom;	
+
+	/**
+	 * 出海关时间 
+	 */
+	private String clearedCustomTime;	
+
+	/**
+	 * 接货人确定接货(0=禁用,1=启用) 
+	 */
+	private Integer makeCargo;	
+
+	/**
+	 * 接货完成时间 
+	 */
+	private String makeCargoTime;	
+
+	/**
+	 * 收购商确认(0=禁用,1=启用) 
+	 */
+	private Integer confirmReceipt;	
+
+	/**
+	 * 收货方确认时间(相当于订单完成时间) 
+	 */
+	private String confirmReceiptTime;	
+
+	/**
+	 * 订单状态已完成(0=进行中,1=已完成) 
+	 */
+	private Integer orderFinish;	
+
+	/**
+	 * 创建时间 
+	 */
+	private String createTime;	
+
+	/**
+	 * 创建人编号 
+	 */
+	private String createBy;	
+
+	/**
+	 * 创建人名称 
+	 */
+	private String createName;	
+
+	/**
+	 * 更新时间 
+	 */
+	private String updateTime;	
+
+	/**
+	 * 更新人编号 
+	 */
+	private String updateBy;	
+
+	/**
+	 * 更新人名称 
+	 */
+	private String updateName;	
+
+	/**
+	 * 删除状态(0=禁用,1=启用) 
+	 */
+	private Integer deleteStatus;	
+
+	/**
+	 * 一级市场订单ID 
+	 */
+	private Long levelOneOrderId;	
+
+
+
+
+
+	
+
+
+}

+ 1 - 1
sp-core/sp-base/src/main/java/com/pj/current/satoken/StpAPPUserUtil.java

@@ -53,7 +53,7 @@ public class StpAPPUserUtil {
      * 缓存登录用户信息
      * @param info
      */
-    public static void cachePcLoginInfo(PCLoginUserInfo info){
+    public static void cacheAPPLoginInfo(APPLoginUserInfo info){
         String loginId= StpUtil.getLoginIdAsString();
         RedisUtil.set("app:"+loginId, JSONUtil.toJsonStr(info));
     }

+ 25 - 0
sp-core/sp-base/src/main/java/com/pj/enummj/AfterSaleApplyType.java

@@ -0,0 +1,25 @@
+package com.pj.enummj;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Author Mechrevo
+ * @Date 2023 07 27 15 36
+ **/
+@Getter
+@AllArgsConstructor
+public enum AfterSaleApplyType {
+
+    //申请类型[0=退货退款,1=仅退货,2=仅退款]
+    AFTER_SALE_APPLY_TYPE_ZERO(0,"退货退款"),
+
+    AFTER_SALE_APPLY_TYPE_ONE(1,"仅退货"),
+    AFTER_SALE_APPLY_TYPE_TWO(2,"仅退款");
+
+    private Integer code;
+    private String msg;
+
+
+
+}

+ 72 - 2
sp-service/level-one-server/src/main/java/com/pj/tb_enterprise/MethodEnterpriseService.java

@@ -1,5 +1,15 @@
 package com.pj.tb_enterprise;
 
+import com.pj.api.client.admin.AdminInterface;
+import com.pj.api.client.transport.TransportInterface;
+import com.pj.api.dto.AppUserDto;
+import com.pj.api.dto.TbLogisticsDto;
+import com.pj.tb_enterprise.vo.OrdersVo;
+import com.pj.tb_goods.TbGoods;
+import com.pj.tb_goods.TbGoodsMapper;
+import com.pj.tb_order.TbOrder;
+import com.pj.tb_people.TbPeople;
+import com.pj.tb_people.TbPeopleMapper;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
@@ -24,10 +34,70 @@ import java.util.concurrent.Executors;
 public class MethodEnterpriseService {
 
     @Autowired
-    private TbEnterpriseMapper tbEnterpriseMapper;
-
+    private AdminInterface adminInterface;
     @Autowired
     private TbEnterpriseService tbEnterpriseService;
+    @Autowired
+    private TbPeopleMapper tbPeopleMapper;
+    @Autowired
+    private TransportInterface transportInterface;
+    @Autowired
+    private TbGoodsMapper tbGoodsMapper;
+
+    /**
+     * 方法抽取:将List<TbOrder> tbOrderList 转成 List<OrderVo> vo
+     * @param tbOrderList
+     * @return
+     */
+    public List<OrdersVo> orderListChangeVo(List<TbOrder> tbOrderList){
+        if(tbOrderList.size() == 0)return new ArrayList<>();
+
+        //创建返回值集合
+        List<OrdersVo> result = new ArrayList<>();
+        //循环遍历
+        tbOrderList.forEach(item -> {
+            //初始化Vo信息
+            Long orderId = null,groupId = null;
+            String goodsName = null,goodsImg = null,groupName = null,tradeNum = null;
+            Integer orderStatus = null;
+            Double price = null; Date orderTime = null;
+            //开始处理
+            Long buyUserId = item.getBuyUserId();
+            AppUserDto appUserById = adminInterface.getAppUserById(buyUserId);
+            if(appUserById == null)throw new RuntimeException("该订单无买家信息");
+            //orderId
+            orderId = item.getId();
+            //groupId,groupName
+            String fkId = appUserById.getFkId();
+            TbPeople tbPeople = tbPeopleMapper.selectById(fkId);
+            if(tbPeople != null){
+                groupId = tbPeople.getGroupId();
+                groupName = tbPeople.getGroupName();
+            }
+            //tradeNum
+            tradeNum = item.getTradeNo();
+            //goodsName,goodsImg
+            goodsName = item.getGoodsNames();
+            Long goodsId = item.getGoodsId();
+            TbGoods tbGoods = tbGoodsMapper.selectById(goodsId);
+            if(tbGoods != null)goodsImg = tbGoods.getAvatar();
+            //price
+            price = item.getTotalPrice();
+            //orderTime
+            orderTime = item.getCreateTime();
+            //orderStatus
+            orderStatus = item.getConfirm();
+            //物流对象
+            TbLogisticsDto tbLogisticsDto = transportInterface.selectByOrderId(orderId);
+            //数据封装
+            result.add(new OrdersVo(orderId,tradeNum,orderTime,goodsName,goodsImg,price,groupId,groupName,orderStatus,tbLogisticsDto));
+        });
+
+        //返回前端
+        return result;
+    }
+
+
     /**
      * 方法抽取  导入
      * @param row

+ 8 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_enterprise/TbEnterpriseAppController.java

@@ -2,6 +2,7 @@ package com.pj.tb_enterprise;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.pj.project4sp.SP;
+import com.pj.tb_enterprise.vo.OrdersVo;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -49,5 +50,12 @@ public class TbEnterpriseAppController {
 		return AjaxJson.getSuccess("商家认证信息已提交,管理员审核中,请耐心等待!");
 	}
 
+	/** 管理一级市场的贸易订单 */
+	@RequestMapping("manageLevelOneOrders")
+	public AjaxJson manageLevelOneOrders(@RequestParam(value = "keyword",required = false)String keyword){
+		SoMap so = SoMap.getRequestSoMap();
+		List<OrdersVo> ordersVos = tbEnterpriseService.manageLevelOneOrders(so.startPage(),keyword);
+		return AjaxJson.getSuccessData(ordersVos);
+	}
 
 }

+ 33 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_enterprise/TbEnterpriseService.java

@@ -4,6 +4,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -12,8 +13,14 @@ import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.event.AnalysisEventListener;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.pj.api.client.admin.AdminInterface;
+import com.pj.current.dto.APPLoginUserInfo;
+import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.current.satoken.StpUserUtil;
+import com.pj.enummj.DeleteStatus;
 import com.pj.enummj.People;
+import com.pj.tb_enterprise.vo.OrdersVo;
+import com.pj.tb_order.TbOrder;
+import com.pj.tb_order.TbOrderMapper;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.so.SoMap;
 import org.apache.commons.lang3.StringUtils;
@@ -42,8 +49,12 @@ public class TbEnterpriseService extends ServiceImpl<TbEnterpriseMapper, TbEnter
 	/** 底层 Mapper 对象 */
 	@Autowired
 	TbEnterpriseMapper tbEnterpriseMapper;
+	/** rpc远程调用 */
 	@Autowired
 	AdminInterface adminInterface;
+	/** 订单表mapper */
+	@Autowired
+	private TbOrderMapper tbOrderMapper;
 
 	/** 非事务方法调用事务方法需要代理对象 */
 	@Autowired
@@ -144,6 +155,28 @@ public class TbEnterpriseService extends ServiceImpl<TbEnterpriseMapper, TbEnter
 		return insert == 1;
 	}
 
+	/** 管理一级市场的贸易订单。
+	 * 列表(主要展示字段:订单号、下单时间、商品名称、图片、价格、购买的边民组、订单状态、物流信息)、
+	 * 确认退货/退款;
+	 * 物流状态  SoMap soMap
+	 */
+	public List<OrdersVo> manageLevelOneOrders(SoMap so,String keyword){
+
+		//获取当前登录用户
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if(appLoginInfo == null)throw new RuntimeException("当前登陆用户信息已失效!");
+		Long loginId = appLoginInfo.getLoginId();
+		//仅能查询自己的订单
+		so.set("buy_user_id",loginId);
+		so.set("delete_status",DeleteStatus.DELETE_STATUS_ON.getCode());
+		so.set("keyword",keyword);
+
+		List<TbOrder> tbOrders = tbOrderMapper.getList(so);
+		//执行数据封装
+		List<OrdersVo> ordersVos = methodEnterpriseService.orderListChangeVo(tbOrders);
+		return ordersVos;
+	}
+
 
 	/**
 	 * 导入

+ 52 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_enterprise/vo/OrdersVo.java

@@ -0,0 +1,52 @@
+package com.pj.tb_enterprise.vo;
+
+import com.pj.api.dto.TbLogisticsDto;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @Author Mechrevo
+ * @Date 2023 07 27 15 52
+ **/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OrdersVo {
+
+    /** 订单ID */
+    private Long orderId;
+
+    /** 订单号 */
+    private String tradeNum;
+
+    /** 下单时间 */
+    private Date orderTime;
+
+    /** 商品名称 */
+    private String goodsName;
+
+    /** 商品图片 */
+    private String goodsImg;
+
+    /** 价格 */
+    private Double price;
+
+    /** 购买的边民组ID */
+    private Long groupId;
+
+    /** 购买的边民组名称 */
+    private String groupName;
+
+    /** 订单状态 */
+    private Integer orderStatus;
+
+    /** 物流信息 */
+    private TbLogisticsDto tbLogisticsDto;
+
+
+
+
+}

+ 12 - 4
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrder.java

@@ -4,6 +4,7 @@ import java.io.Serializable;
 import java.util.*;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import lombok.EqualsAndHashCode;
@@ -68,7 +69,12 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	/**
 	 *  
 	 */
-	private Long saleMainId;	
+	private Long saleMainId;
+
+	/**
+	 *  商品ID
+	 */
+	private Long goodsId;
 
 	/**
 	 * 订单号 
@@ -223,7 +229,7 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	/**
 	 * 是否确认(0=否,1=是) 
 	 */
-	private String confirm;	
+	private Integer confirm;
 
 	/**
 	 * 是否接单 
@@ -263,7 +269,8 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	/**
 	 * 创建时间 
 	 */
-	private String createTime;	
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date createTime;
 
 	/**
 	 * 创建人编号 
@@ -278,7 +285,8 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	/**
 	 * 更新时间 
 	 */
-	private String updateTime;	
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date updateTime;
 
 	/**
 	 * 更新人编号 

+ 7 - 1
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderMapper.xml

@@ -10,7 +10,13 @@
 	
 	<!-- 通用映射:自动模式 -->
 	<resultMap id="model" autoMapping="true" type="com.pj.tb_order.TbOrder"></resultMap>
-	
+
+	<select id="selectOrderListVo" resultMap="">
+
+	</select>
+
+
+
 	<!-- 公共查询sql片段 -->
 	<sql id="select_sql">
 		select id,trade_area_id,trade_no,trade_area_name,buy_user_name,buy_user_type,enterprise_name,total_weight,total_price,

+ 13 - 1
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderService.java

@@ -1,6 +1,9 @@
 package com.pj.tb_order;
 
 import java.util.List;
+
+import com.pj.current.dto.APPLoginUserInfo;
+import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -45,6 +48,15 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
 	List<TbOrder> getList(SoMap so) { 
 		return tbOrderMapper.getList(so);	
 	}
-	
+
+	/** 获取当前登陆人订单集合 */
+	public List<TbOrder> selectSelfOrders(SoMap so) {
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if(appLoginInfo == null)throw new RuntimeException("当前登陆用户信息已失效!");
+		so.set("buy_user_id",appLoginInfo.getLoginId());
+		return tbOrderMapper.getList(so);
+	}
+
+
 
 }

+ 144 - 144
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderUtil.java

@@ -1,144 +1,144 @@
-package com.pj.tb_order;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.pj.utils.sg.*;
-import java.util.*;
-
-/**
- * 工具类:tb_order -- 订单表
- * @author loovi 
- *
- */
-@Component
-public class TbOrderUtil {
-
-	
-	/** 底层 Mapper 对象 */
-	public static TbOrderMapper tbOrderMapper;
-	@Autowired
-	private void setTbOrderMapper(TbOrderMapper tbOrderMapper) {
-		TbOrderUtil.tbOrderMapper = tbOrderMapper;
-	}
-	
-	
-	/** 
-	 * 将一个 TbOrder 对象进行进行数据完整性校验 (方便add/update等接口数据校验) [G] 
-	 */
-	static void check(TbOrder t) {
-		AjaxError.throwByIsNull(t.getId(), "[主键] 不能为空");		// 验证: 主键 
-		AjaxError.throwByIsNull(t.getTradeAreaId(), "[] 不能为空");		// 验证:  
-		AjaxError.throwByIsNull(t.getTradeAreaName(), "[] 不能为空");		// 验证:  
-		AjaxError.throwByIsNull(t.getAddressIds(), "[] 不能为空");		// 验证:  
-		AjaxError.throwByIsNull(t.getSaleMainId(), "[] 不能为空");		// 验证:  
-		AjaxError.throwByIsNull(t.getTradeNo(), "[订单号] 不能为空");		// 验证: 订单号 
-		AjaxError.throwByIsNull(t.getBuyUserId(), "[买家ID] 不能为空");		// 验证: 买家ID 
-		AjaxError.throwByIsNull(t.getBuyUserName(), "[买家] 不能为空");		// 验证: 买家 
-		AjaxError.throwByIsNull(t.getBuyUserType(), "[购买用户类型] 不能为空");		// 验证: 购买用户类型(3=边民,2=组长) 
-		AjaxError.throwByIsNull(t.getEnterpriseId(), "[商家ID] 不能为空");		// 验证: 商家ID 
-		AjaxError.throwByIsNull(t.getEnterpriseName(), "[商家名称] 不能为空");		// 验证: 商家名称 
-		AjaxError.throwByIsNull(t.getTotalWeight(), "[总重量] 不能为空");		// 验证: 总重量 
-		AjaxError.throwByIsNull(t.getTotalPrice(), "[总金额] 不能为空");		// 验证: 总金额 
-		AjaxError.throwByIsNull(t.getTradeTime(), "[交易时间] 不能为空");		// 验证: 交易时间 
-		AjaxError.throwByIsNull(t.getTradeStatus(), "[交易状态] 不能为空");		// 验证: 交易状态(0=未支付,1=已支付) 
-		AjaxError.throwByIsNull(t.getPayType(), "[支付方式] 不能为空");		// 验证: 支付方式(0=金融互助,1=现金刷卡) 
-		AjaxError.throwByIsNull(t.getSettleTime(), "[结算时间] 不能为空");		// 验证: 结算时间 
-		AjaxError.throwByIsNull(t.getRealPrice(), "[当前结算金额] 不能为空");		// 验证: 当前结算金额 
-		AjaxError.throwByIsNull(t.getShouldPrice(), "[应结金额] 不能为空");		// 验证: 应结金额 
-		AjaxError.throwByIsNull(t.getSettleUserId(), "[对账人] 不能为空");		// 验证: 对账人 
-		AjaxError.throwByIsNull(t.getRecordUserId(), "[对账人员] 不能为空");		// 验证: 对账人员 
-		AjaxError.throwByIsNull(t.getRecordTime(), "[对账时间] 不能为空");		// 验证: 对账时间 
-		AjaxError.throwByIsNull(t.getRecord(), "[是否对账] 不能为空");		// 验证: 是否对账(0=否,) 
-		AjaxError.throwByIsNull(t.getRefundReason(), "[退款原因] 不能为空");		// 验证: 退款原因 
-		AjaxError.throwByIsNull(t.getRefundTime(), "[退款时间] 不能为空");		// 验证: 退款时间 
-		AjaxError.throwByIsNull(t.getReceiveName(), "[] 不能为空");		// 验证:  
-		AjaxError.throwByIsNull(t.getReceivePhone(), "[] 不能为空");		// 验证:  
-		AjaxError.throwByIsNull(t.getReceiveAddress(), "[] 不能为空");		// 验证:  
-		AjaxError.throwByIsNull(t.getOutTime(), "[出互市区时间] 不能为空");		// 验证: 出互市区时间 
-		AjaxError.throwByIsNull(t.getGoodsNames(), "[商品名称字符串] 不能为空");		// 验证: 商品名称字符串 
-		AjaxError.throwByIsNull(t.getApply(), "[是否申报] 不能为空");		// 验证: 是否申报 
-		AjaxError.throwByIsNull(t.getApplyTime(), "[申报时间] 不能为空");		// 验证: 申报时间 
-		AjaxError.throwByIsNull(t.getApplyResult(), "[申报结果] 不能为空");		// 验证: 申报结果 
-		AjaxError.throwByIsNull(t.getApplyFailReason(), "[] 不能为空");		// 验证:  
-		AjaxError.throwByIsNull(t.getDistribution(), "[分配方式] 不能为空");		// 验证: 分配方式(0=均分,1=自选数量) 
-		AjaxError.throwByIsNull(t.getConfirm(), "[是否确认] 不能为空");		// 验证: 是否确认(0=否,1=是) 
-		AjaxError.throwByIsNull(t.getPick(), "[是否接单] 不能为空");		// 验证: 是否接单 
-		AjaxError.throwByIsNull(t.getPickTime(), "[接单时间] 不能为空");		// 验证: 接单时间 
-		AjaxError.throwByIsNull(t.getShopId(), "[] 不能为空");		// 验证:  
-		AjaxError.throwByIsNull(t.getShopName(), "[] 不能为空");		// 验证:  
-		AjaxError.throwByIsNull(t.getSend(), "[是否发货] 不能为空");		// 验证: 是否发货 
-		AjaxError.throwByIsNull(t.getSendTime(), "[发货时间] 不能为空");		// 验证: 发货时间 
-		AjaxError.throwByIsNull(t.getLevelTwoOrderId(), "[对应二级市场中的收购单ID] 不能为空");		// 验证: 对应二级市场中的收购单ID 
-		AjaxError.throwByIsNull(t.getCreateTime(), "[创建时间] 不能为空");		// 验证: 创建时间 
-		AjaxError.throwByIsNull(t.getCreateBy(), "[创建人编号] 不能为空");		// 验证: 创建人编号 
-		AjaxError.throwByIsNull(t.getCreateName(), "[创建人名称] 不能为空");		// 验证: 创建人名称 
-		AjaxError.throwByIsNull(t.getUpdateTime(), "[更新时间] 不能为空");		// 验证: 更新时间 
-		AjaxError.throwByIsNull(t.getUpdateBy(), "[更新人编号] 不能为空");		// 验证: 更新人编号 
-		AjaxError.throwByIsNull(t.getUpdateName(), "[更新人名称] 不能为空");		// 验证: 更新人名称 
-		AjaxError.throwByIsNull(t.getDeleteStatus(), "[删除状态] 不能为空");		// 验证: 删除状态(0=禁用,1=启用) 
-	}
-
-	/** 
-	 * 获取一个TbOrder (方便复制代码用) [G] 
-	 */ 
-	static TbOrder getTbOrder() {
-		TbOrder t = new TbOrder();	// 声明对象 
-		t.setId(0L);		// 主键
-		t.setTradeAreaId(0L);		//  
-		t.setTradeAreaName("");		//  
-		t.setAddressIds("");		//  
-		t.setSaleMainId(0L);		//  
-		t.setTradeNo("");		// 订单号 
-		t.setBuyUserId(0L);		// 买家ID 
-		t.setBuyUserName("");		// 买家 
-		t.setBuyUserType("");		// 购买用户类型(3=边民,2=组长) 
-		t.setEnterpriseId(0L);		// 商家ID 
-		t.setEnterpriseName("");		// 商家名称 
-		t.setTotalWeight(0.0);		// 总重量 
-		t.setTotalPrice(0.0);		// 总金额 
-		t.setTradeTime(new Date());		// 交易时间 
-		t.setTradeStatus("");		// 交易状态(0=未支付,1=已支付) 
-		t.setPayType("");		// 支付方式(0=金融互助,1=现金刷卡) 
-		t.setSettleTime("");		// 结算时间 
-		t.setRealPrice(0.0);		// 当前结算金额 
-		t.setShouldPrice(0.0);		// 应结金额 
-		t.setSettleUserId(0L);		// 对账人 
-		t.setRecordUserId(0L);		// 对账人员 
-		t.setRecordTime("");		// 对账时间 
-		t.setRecord("");		// 是否对账(0=否,) 
-		t.setRefundReason("");		// 退款原因 
-		t.setRefundTime("");		// 退款时间 
-		t.setReceiveName("");		//  
-		t.setReceivePhone("");		//  
-		t.setReceiveAddress("");		//  
-		t.setOutTime("");		// 出互市区时间 
-		t.setGoodsNames("");		// 商品名称字符串 
-		t.setApply("");		// 是否申报 
-		t.setApplyTime("");		// 申报时间 
-		t.setApplyResult("");		// 申报结果 
-		t.setApplyFailReason("");		//  
-		t.setDistribution("");		// 分配方式(0=均分,1=自选数量) 
-		t.setConfirm("");		// 是否确认(0=否,1=是) 
-		t.setPick("");		// 是否接单 
-		t.setPickTime("");		// 接单时间 
-		t.setShopId(0L);		//  
-		t.setShopName("");		//  
-		t.setSend("");		// 是否发货 
-		t.setSendTime("");		// 发货时间 
-		t.setLevelTwoOrderId(0L);		// 对应二级市场中的收购单ID 
-		t.setCreateTime("");		// 创建时间 
-		t.setCreateBy("");		// 创建人编号 
-		t.setCreateName("");		// 创建人名称 
-		t.setUpdateTime("");		// 更新时间 
-		t.setUpdateBy("");		// 更新人编号 
-		t.setUpdateName("");		// 更新人名称 
-		t.setDeleteStatus(0);		// 删除状态(0=禁用,1=启用) 
-		return t;
-	}
-	
-	
-	
-	
-	
-}
+//package com.pj.tb_order;
+//
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//
+//import com.pj.utils.sg.*;
+//import java.util.*;
+//
+///**
+// * 工具类:tb_order -- 订单表
+// * @author loovi
+// *
+// */
+//@Component
+//public class TbOrderUtil {
+//
+//
+//	/** 底层 Mapper 对象 */
+//	public static TbOrderMapper tbOrderMapper;
+//	@Autowired
+//	private void setTbOrderMapper(TbOrderMapper tbOrderMapper) {
+//		TbOrderUtil.tbOrderMapper = tbOrderMapper;
+//	}
+//
+//
+//	/**
+//	 * 将一个 TbOrder 对象进行进行数据完整性校验 (方便add/update等接口数据校验) [G]
+//	 */
+//	static void check(TbOrder t) {
+//		AjaxError.throwByIsNull(t.getId(), "[主键] 不能为空");		// 验证: 主键
+//		AjaxError.throwByIsNull(t.getTradeAreaId(), "[] 不能为空");		// 验证:
+//		AjaxError.throwByIsNull(t.getTradeAreaName(), "[] 不能为空");		// 验证:
+//		AjaxError.throwByIsNull(t.getAddressIds(), "[] 不能为空");		// 验证:
+//		AjaxError.throwByIsNull(t.getSaleMainId(), "[] 不能为空");		// 验证:
+//		AjaxError.throwByIsNull(t.getTradeNo(), "[订单号] 不能为空");		// 验证: 订单号
+//		AjaxError.throwByIsNull(t.getBuyUserId(), "[买家ID] 不能为空");		// 验证: 买家ID
+//		AjaxError.throwByIsNull(t.getBuyUserName(), "[买家] 不能为空");		// 验证: 买家
+//		AjaxError.throwByIsNull(t.getBuyUserType(), "[购买用户类型] 不能为空");		// 验证: 购买用户类型(3=边民,2=组长)
+//		AjaxError.throwByIsNull(t.getEnterpriseId(), "[商家ID] 不能为空");		// 验证: 商家ID
+//		AjaxError.throwByIsNull(t.getEnterpriseName(), "[商家名称] 不能为空");		// 验证: 商家名称
+//		AjaxError.throwByIsNull(t.getTotalWeight(), "[总重量] 不能为空");		// 验证: 总重量
+//		AjaxError.throwByIsNull(t.getTotalPrice(), "[总金额] 不能为空");		// 验证: 总金额
+//		AjaxError.throwByIsNull(t.getTradeTime(), "[交易时间] 不能为空");		// 验证: 交易时间
+//		AjaxError.throwByIsNull(t.getTradeStatus(), "[交易状态] 不能为空");		// 验证: 交易状态(0=未支付,1=已支付)
+//		AjaxError.throwByIsNull(t.getPayType(), "[支付方式] 不能为空");		// 验证: 支付方式(0=金融互助,1=现金刷卡)
+//		AjaxError.throwByIsNull(t.getSettleTime(), "[结算时间] 不能为空");		// 验证: 结算时间
+//		AjaxError.throwByIsNull(t.getRealPrice(), "[当前结算金额] 不能为空");		// 验证: 当前结算金额
+//		AjaxError.throwByIsNull(t.getShouldPrice(), "[应结金额] 不能为空");		// 验证: 应结金额
+//		AjaxError.throwByIsNull(t.getSettleUserId(), "[对账人] 不能为空");		// 验证: 对账人
+//		AjaxError.throwByIsNull(t.getRecordUserId(), "[对账人员] 不能为空");		// 验证: 对账人员
+//		AjaxError.throwByIsNull(t.getRecordTime(), "[对账时间] 不能为空");		// 验证: 对账时间
+//		AjaxError.throwByIsNull(t.getRecord(), "[是否对账] 不能为空");		// 验证: 是否对账(0=否,)
+//		AjaxError.throwByIsNull(t.getRefundReason(), "[退款原因] 不能为空");		// 验证: 退款原因
+//		AjaxError.throwByIsNull(t.getRefundTime(), "[退款时间] 不能为空");		// 验证: 退款时间
+//		AjaxError.throwByIsNull(t.getReceiveName(), "[] 不能为空");		// 验证:
+//		AjaxError.throwByIsNull(t.getReceivePhone(), "[] 不能为空");		// 验证:
+//		AjaxError.throwByIsNull(t.getReceiveAddress(), "[] 不能为空");		// 验证:
+//		AjaxError.throwByIsNull(t.getOutTime(), "[出互市区时间] 不能为空");		// 验证: 出互市区时间
+//		AjaxError.throwByIsNull(t.getGoodsNames(), "[商品名称字符串] 不能为空");		// 验证: 商品名称字符串
+//		AjaxError.throwByIsNull(t.getApply(), "[是否申报] 不能为空");		// 验证: 是否申报
+//		AjaxError.throwByIsNull(t.getApplyTime(), "[申报时间] 不能为空");		// 验证: 申报时间
+//		AjaxError.throwByIsNull(t.getApplyResult(), "[申报结果] 不能为空");		// 验证: 申报结果
+//		AjaxError.throwByIsNull(t.getApplyFailReason(), "[] 不能为空");		// 验证:
+//		AjaxError.throwByIsNull(t.getDistribution(), "[分配方式] 不能为空");		// 验证: 分配方式(0=均分,1=自选数量)
+//		AjaxError.throwByIsNull(t.getConfirm(), "[是否确认] 不能为空");		// 验证: 是否确认(0=否,1=是)
+//		AjaxError.throwByIsNull(t.getPick(), "[是否接单] 不能为空");		// 验证: 是否接单
+//		AjaxError.throwByIsNull(t.getPickTime(), "[接单时间] 不能为空");		// 验证: 接单时间
+//		AjaxError.throwByIsNull(t.getShopId(), "[] 不能为空");		// 验证:
+//		AjaxError.throwByIsNull(t.getShopName(), "[] 不能为空");		// 验证:
+//		AjaxError.throwByIsNull(t.getSend(), "[是否发货] 不能为空");		// 验证: 是否发货
+//		AjaxError.throwByIsNull(t.getSendTime(), "[发货时间] 不能为空");		// 验证: 发货时间
+//		AjaxError.throwByIsNull(t.getLevelTwoOrderId(), "[对应二级市场中的收购单ID] 不能为空");		// 验证: 对应二级市场中的收购单ID
+//		AjaxError.throwByIsNull(t.getCreateTime(), "[创建时间] 不能为空");		// 验证: 创建时间
+//		AjaxError.throwByIsNull(t.getCreateBy(), "[创建人编号] 不能为空");		// 验证: 创建人编号
+//		AjaxError.throwByIsNull(t.getCreateName(), "[创建人名称] 不能为空");		// 验证: 创建人名称
+//		AjaxError.throwByIsNull(t.getUpdateTime(), "[更新时间] 不能为空");		// 验证: 更新时间
+//		AjaxError.throwByIsNull(t.getUpdateBy(), "[更新人编号] 不能为空");		// 验证: 更新人编号
+//		AjaxError.throwByIsNull(t.getUpdateName(), "[更新人名称] 不能为空");		// 验证: 更新人名称
+//		AjaxError.throwByIsNull(t.getDeleteStatus(), "[删除状态] 不能为空");		// 验证: 删除状态(0=禁用,1=启用)
+//	}
+//
+//	/**
+//	 * 获取一个TbOrder (方便复制代码用) [G]
+//	 */
+//	static TbOrder getTbOrder() {
+//		TbOrder t = new TbOrder();	// 声明对象
+//		t.setId(0L);		// 主键
+//		t.setTradeAreaId(0L);		//
+//		t.setTradeAreaName("");		//
+//		t.setAddressIds("");		//
+//		t.setSaleMainId(0L);		//
+//		t.setTradeNo("");		// 订单号
+//		t.setBuyUserId(0L);		// 买家ID
+//		t.setBuyUserName("");		// 买家
+//		t.setBuyUserType("");		// 购买用户类型(3=边民,2=组长)
+//		t.setEnterpriseId(0L);		// 商家ID
+//		t.setEnterpriseName("");		// 商家名称
+//		t.setTotalWeight(0.0);		// 总重量
+//		t.setTotalPrice(0.0);		// 总金额
+//		t.setTradeTime(new Date());		// 交易时间
+//		t.setTradeStatus("");		// 交易状态(0=未支付,1=已支付)
+//		t.setPayType("");		// 支付方式(0=金融互助,1=现金刷卡)
+//		t.setSettleTime("");		// 结算时间
+//		t.setRealPrice(0.0);		// 当前结算金额
+//		t.setShouldPrice(0.0);		// 应结金额
+//		t.setSettleUserId(0L);		// 对账人
+//		t.setRecordUserId(0L);		// 对账人员
+//		t.setRecordTime("");		// 对账时间
+//		t.setRecord("");		// 是否对账(0=否,)
+//		t.setRefundReason("");		// 退款原因
+//		t.setRefundTime("");		// 退款时间
+//		t.setReceiveName("");		//
+//		t.setReceivePhone("");		//
+//		t.setReceiveAddress("");		//
+//		t.setOutTime("");		// 出互市区时间
+//		t.setGoodsNames("");		// 商品名称字符串
+//		t.setApply("");		// 是否申报
+//		t.setApplyTime("");		// 申报时间
+//		t.setApplyResult("");		// 申报结果
+//		t.setApplyFailReason("");		//
+//		t.setDistribution("");		// 分配方式(0=均分,1=自选数量)
+//		t.setConfirm("");		// 是否确认(0=否,1=是)
+//		t.setPick("");		// 是否接单
+//		t.setPickTime("");		// 接单时间
+//		t.setShopId(0L);		//
+//		t.setShopName("");		//
+//		t.setSend("");		// 是否发货
+//		t.setSendTime("");		// 发货时间
+//		t.setLevelTwoOrderId(0L);		// 对应二级市场中的收购单ID
+//		t.setCreateTime("");		// 创建时间
+//		t.setCreateBy("");		// 创建人编号
+//		t.setCreateName("");		// 创建人名称
+//		t.setUpdateTime("");		// 更新时间
+//		t.setUpdateBy("");		// 更新人编号
+//		t.setUpdateName("");		// 更新人名称
+//		t.setDeleteStatus(0);		// 删除状态(0=禁用,1=启用)
+//		return t;
+//	}
+//
+//
+//
+//
+//
+//}

+ 61 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/OrderAfterSaleAPPController.java

@@ -0,0 +1,61 @@
+package com.pj.tb_order_after_sale;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pj.current.dto.APPLoginUserInfo;
+import com.pj.current.satoken.StpAPPUserUtil;
+import com.pj.project4sp.SP;
+import com.pj.tb_order.TbOrder;
+import com.pj.tb_order.TbOrderMapper;
+import com.pj.tb_order_after_sale.param.AfterSaleParam;
+import com.pj.utils.sg.AjaxJson;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+/**
+ * Controller: tb_order_after_sale -- 售后申请表,并关联一级市场订单
+ * @author qzy 
+ */
+@RestController
+@RequestMapping("/app/TbOrderAfterSale/")
+public class OrderAfterSaleAPPController {
+
+	/** 底层 Service 对象 */
+	@Autowired
+	TbOrderAfterSaleService tbOrderAfterSaleService;
+
+
+
+	/** 获取当前登陆人的订单号 */
+	@RequestMapping("selectSelfOrders")
+		@SaCheckPermission(TbOrderAfterSale.PERMISSION_CODE)
+	public AjaxJson selectSelfOrders() {
+		SoMap so = SoMap.getRequestSoMap();
+		List<TbOrder> list = tbOrderAfterSaleService.selectSelfOrders(so.startPage());
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
+
+
+	/** 发起售后 */
+	@RequestMapping("afterSale")
+		@SaCheckPermission(TbOrderAfterSale.PERMISSION_CODE)
+	public AjaxJson afterSale(@Validated @RequestBody AfterSaleParam afterSaleParam) {
+		boolean afteredSale = tbOrderAfterSaleService.afterSale(afterSaleParam);
+		if(afteredSale)return AjaxJson.getSuccess("售后发起成功!");
+		return AjaxJson.getError("售后发起失败!");
+	}
+
+
+
+
+	
+	
+	
+
+}

+ 114 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSale.java

@@ -0,0 +1,114 @@
+package com.pj.tb_order_after_sale;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.EqualsAndHashCode;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * Model: tb_order_after_sale -- 售后申请表,并关联一级市场订单
+ * @author qzy 
+ */
+@Data
+@Accessors(chain = true)
+@TableName(TbOrderAfterSale.TABLE_NAME)
+@EqualsAndHashCode(callSuper = false)
+public class TbOrderAfterSale extends Model<TbOrderAfterSale> implements Serializable {
+
+	// ---------- 模块常量 ----------
+	/**
+	 * 序列化版本id 
+	 */
+	private static final long serialVersionUID = 1L;	
+	/**
+	 * 此模块对应的表名 
+	 */
+	public static final String TABLE_NAME = "tb_order_after_sale";	
+	/**
+	 * 此模块对应的权限码 
+	 */
+	public static final String PERMISSION_CODE = "tb-order-after-sale";
+	public static final String PERMISSION_CODE_ADD = "tb-order-after-sale-add";
+	public static final String PERMISSION_CODE_EDIT = "tb-order-after-sale-edit";
+	public static final String PERMISSION_CODE_DEL = "tb-order-after-sale-del";
+
+
+
+
+	// ---------- 表中字段 ----------
+	/**
+	 * 售后申请表主键id 
+	 */
+	@TableId(type = IdType.AUTO)
+	private Long id;	
+
+	/**
+	 * 订单表主键 
+	 */
+	private Long orderId;	
+
+	/**
+	 * 发起售后人的ID 
+	 */
+	private Long userId;	
+
+	/**
+	 * 售后发起人电话 
+	 */
+	private String userPhone;	
+
+	/**
+	 * 发起售后时间 
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date time;
+
+	/**
+	 * 申请类型 
+	 */
+	private Integer applyType;	
+
+	/**
+	 * 发起售后原因 
+	 */
+	private String remark;
+
+	/**
+	 * 卖家ID
+	 */
+	private Long saleMainId;
+
+	/**
+	 * 售后状态 
+	 */
+	private Integer afterSaleStatus;	
+
+	/**
+	 * 货物图片 
+	 */
+	private String goodsImg;	
+
+	/**
+	 * 货物名称 
+	 */
+	private String goodsName;	
+
+	/**
+	 * 货物数量 
+	 */
+	private Integer goodsNum;	
+
+
+
+
+
+	
+
+
+}

+ 87 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSaleController.java

@@ -0,0 +1,87 @@
+package com.pj.tb_order_after_sale;
+
+import java.util.List;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import com.pj.utils.sg.*;
+import com.pj.project4sp.SP;
+
+import com.pj.current.satoken.StpUserUtil;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+
+/**
+ * Controller: tb_order_after_sale -- 售后申请表,并关联一级市场订单
+ * @author qzy 
+ */
+@RestController
+@RequestMapping("/TbOrderAfterSale/")
+public class TbOrderAfterSaleController {
+
+	/** 底层 Service 对象 */
+	@Autowired
+	TbOrderAfterSaleService tbOrderAfterSaleService;
+
+	/** 增 */  
+	@RequestMapping("add")
+	@SaCheckPermission(TbOrderAfterSale.PERMISSION_CODE_ADD)
+	public AjaxJson add(TbOrderAfterSale t){
+		tbOrderAfterSaleService.add(t);
+		t = tbOrderAfterSaleService.getById(SP.publicMapper.getPrimarykey());
+		return AjaxJson.getSuccessData(t);
+	}
+
+	/** 删 */  
+	@RequestMapping("delete")
+	@SaCheckPermission(TbOrderAfterSale.PERMISSION_CODE_DEL)
+	public AjaxJson delete(Long id){
+		 tbOrderAfterSaleService.delete(id);
+		return AjaxJson.getSuccess();
+	}
+	
+	/** 删 - 根据id列表 */  
+	@RequestMapping("deleteByIds")
+	@SaCheckPermission(TbOrderAfterSale.PERMISSION_CODE_DEL)
+	public AjaxJson deleteByIds(){
+		List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class); 
+		int line = SP.publicMapper.deleteByIds(TbOrderAfterSale.TABLE_NAME, ids);
+		return AjaxJson.getByLine(line);
+	}
+	
+	/** 改 */  
+	@RequestMapping("update")
+	@SaCheckPermission(TbOrderAfterSale.PERMISSION_CODE_EDIT)
+	public AjaxJson update(TbOrderAfterSale t){
+		tbOrderAfterSaleService.update(t);
+		return AjaxJson.getSuccess();
+	}
+
+	/** 查 - 根据id */  
+	@RequestMapping("getById")
+		@SaCheckPermission(TbOrderAfterSale.PERMISSION_CODE)
+	public AjaxJson getById(Long id){
+		TbOrderAfterSale t = tbOrderAfterSaleService.getById(id);
+		return AjaxJson.getSuccessData(t);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
+	@RequestMapping("getList")
+		@SaCheckPermission(TbOrderAfterSale.PERMISSION_CODE)
+	public AjaxJson getList() { 
+		SoMap so = SoMap.getRequestSoMap();
+		List<TbOrderAfterSale> list = tbOrderAfterSaleService.getList(so.startPage());
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
+	
+	
+	
+	
+
+	
+	
+	
+
+}

+ 30 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSaleMapper.java

@@ -0,0 +1,30 @@
+package com.pj.tb_order_after_sale;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+
+import com.pj.utils.so.*;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Mapper: tb_order_after_sale -- 售后申请表,并关联一级市场订单
+ * @author qzy 
+ */
+
+@Mapper
+@Repository
+public interface TbOrderAfterSaleMapper extends BaseMapper <TbOrderAfterSale> {
+
+
+
+	/**
+	 * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+	 * @param so 参数集合 
+	 * @return 数据列表 
+	 */
+	List<TbOrderAfterSale> getList(SoMap so);
+
+
+}

+ 63 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSaleMapper.xml

@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.pj.tb_order_after_sale.TbOrderAfterSaleMapper">
+
+
+
+
+	<!-- ================================== 查询相关 ================================== -->
+	<!-- select id, order_id, user_id, user_phone, time, apply_type, remark, after_sale_status, goods_img, goods_name, goods_num from tb_order_after_sale  -->
+	
+	<!-- 通用映射:自动模式 -->
+	<resultMap id="model" autoMapping="true" type="com.pj.tb_order_after_sale.TbOrderAfterSale"></resultMap>
+	
+	<!-- 公共查询sql片段 -->
+	<sql id="select_sql">
+		select * 
+		from tb_order_after_sale 
+	</sql>
+
+	
+	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
+	<select id="getList" resultMap="model">
+		<include refid="select_sql"></include>
+		<where>
+			<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("orderId") '> and order_id = #{orderId} </if>
+			<if test=' this.has("userId") '> and user_id = #{userId} </if>
+			<if test=' this.has("userPhone") '> and user_phone = #{userPhone} </if>
+			<if test=' this.has("time") '> and time = #{time} </if>
+			<if test=' this.has("applyType") '> and apply_type = #{applyType} </if>
+			<if test=' this.has("remark") '> and remark = #{remark} </if>
+			<if test=' this.has("afterSaleStatus") '> and after_sale_status = #{afterSaleStatus} </if>
+			<if test=' this.has("goodsImg") '> and goods_img = #{goodsImg} </if>
+			<if test=' this.has("goodsName") '> and goods_name = #{goodsName} </if>
+			<if test=' this.has("goodsNum") '> and goods_num = #{goodsNum} </if>
+		</where>
+		order by
+		<choose>
+			<when test='sortType == 1'> id desc </when>
+			<when test='sortType == 2'> order_id desc </when>
+			<when test='sortType == 3'> user_id desc </when>
+			<when test='sortType == 4'> user_phone desc </when>
+			<when test='sortType == 5'> time desc </when>
+			<when test='sortType == 6'> apply_type desc </when>
+			<when test='sortType == 7'> remark desc </when>
+			<when test='sortType == 8'> after_sale_status desc </when>
+			<when test='sortType == 9'> goods_img desc </when>
+			<when test='sortType == 10'> goods_name desc </when>
+			<when test='sortType == 11'> goods_num desc </when>
+			<otherwise> id desc </otherwise>
+		</choose>
+	</select>
+	
+	
+	
+	
+	
+	
+	
+	
+	
+
+</mapper>

+ 83 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSaleService.java

@@ -0,0 +1,83 @@
+package com.pj.tb_order_after_sale;
+
+import java.util.Date;
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.pj.current.dto.APPLoginUserInfo;
+import com.pj.current.satoken.StpAPPUserUtil;
+import com.pj.tb_order.TbOrder;
+import com.pj.tb_order.TbOrderMapper;
+import com.pj.tb_order.TbOrderService;
+import com.pj.tb_order_after_sale.param.AfterSaleParam;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+import com.pj.utils.sg.*;
+
+/**
+ * Service: tb_order_after_sale -- 售后申请表,并关联一级市场订单
+ * @author qzy 
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class TbOrderAfterSaleService extends ServiceImpl<TbOrderAfterSaleMapper, TbOrderAfterSale> implements IService<TbOrderAfterSale>{
+
+	/** 底层 Mapper 对象 */
+	@Autowired
+	TbOrderAfterSaleMapper tbOrderAfterSaleMapper;
+	/** 订单表 */
+	@Autowired
+	private TbOrderService tbOrderService;
+
+	/** 增 */
+	void add(TbOrderAfterSale t){
+		save(t);
+	}
+
+	/** 删 */
+	void delete(Long id){
+		removeById(id);
+	}
+
+	/** 改 */
+	void update(TbOrderAfterSale t){
+		updateById(t);
+
+	}
+
+	/** 查 */
+	TbOrderAfterSale getById(Long id){
+		return super.getById(id);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
+	List<TbOrderAfterSale> getList(SoMap so) { 
+		return tbOrderAfterSaleMapper.getList(so);	
+	}
+
+	/** app查看个人订单 */
+	List<TbOrder> selectSelfOrders(SoMap soMap){
+		//下面调用已获取登陆人信息
+		List<TbOrder> tbOrderList = tbOrderService.selectSelfOrders(soMap);
+		return tbOrderList;
+	}
+
+	/** 售后申请 */
+	boolean afterSale(AfterSaleParam afterSaleParam){
+		TbOrderAfterSale tbOrderAfterSale = new TbOrderAfterSale();
+		BeanUtils.copyProperties(afterSaleParam,tbOrderAfterSale);
+		//设置售后状态为0,待处理
+		tbOrderAfterSale.setAfterSaleStatus(0);
+		tbOrderAfterSale.setTime(new Date());
+		//执行保存
+		int insert = tbOrderAfterSaleMapper.insert(tbOrderAfterSale);
+		if(insert == 1)return true;
+		return false;
+	}
+
+}

+ 27 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/TbOrderAfterSaleUtil.java

@@ -0,0 +1,27 @@
+package com.pj.tb_order_after_sale;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 工具类:tb_order_after_sale -- 售后申请表,并关联一级市场订单
+ * @author qzy 
+ *
+ */
+@Component
+public class TbOrderAfterSaleUtil {
+
+	
+	/** 底层 Mapper 对象 */
+	public static TbOrderAfterSaleMapper tbOrderAfterSaleMapper;
+	@Autowired
+	private void setTbOrderAfterSaleMapper(TbOrderAfterSaleMapper tbOrderAfterSaleMapper) {
+		TbOrderAfterSaleUtil.tbOrderAfterSaleMapper = tbOrderAfterSaleMapper;
+	}
+	
+
+
+	
+	
+	
+}

+ 90 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order_after_sale/param/AfterSaleParam.java

@@ -0,0 +1,90 @@
+package com.pj.tb_order_after_sale.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * @Author Mechrevo
+ * @Date 2023 07 27 15 32
+ **/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AfterSaleParam {
+
+
+
+    /**
+     * 订单表主键
+     */
+    @NotBlank
+    @NotNull(message = "订单表不能为空")
+    private Long orderId;
+
+    /**
+     * 发起售后人的ID
+     */
+    @NotBlank
+    @NotNull(message = "发起售后人ID不能为空")
+    private Long userId;
+
+    /**
+     * 售后发起人电话
+     */
+    private String userPhone;
+
+    /**
+     * 发起售后时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date time;
+
+    /**
+     *  申请类型[0=退货退款,1=仅退货,2=仅退款]
+     */
+    @NotNull(message = "售后类型不能为空")
+    @NotBlank
+    private Integer applyType;
+
+    /**
+     * 发起售后原因
+     */
+    @NotNull(message = "退单理由必填!")
+    private String remark;
+
+    /**
+     * 卖家ID
+     */
+    @NotNull(message = "卖家ID不能为空")
+    @NotBlank
+    private Long saleMainId;
+
+    /**
+     * 售后状态
+     */
+    private Integer afterSaleStatus;
+
+    /**
+     * 货物图片
+     */
+    private String goodsImg;
+
+    /**
+     * 货物名称
+     */
+    private String goodsName;
+
+    /**
+     * 货物数量
+     */
+    private Integer goodsNum;
+
+}

+ 28 - 0
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/MethodPurchaserAddressService.java

@@ -0,0 +1,28 @@
+package com.pj.tb_purchaser_address;
+
+import com.pj.tb_purchaser.TbPurchaserMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @Author Mechrevo
+ * @Date 2023 07 27 14 39
+ **/
+@Service
+@Transactional
+public class MethodPurchaserAddressService {
+
+    @Autowired
+    private TbPurchaserMapper tbPurchaserMapper;
+
+    String addressString(TbPurchaserAddress tbPurchaserAddress){
+        String detailAddress = (tbPurchaserAddress.getProvince() == null ? "" : tbPurchaserAddress.getProvince()
+                + tbPurchaserAddress.getCity() == null ? "" : tbPurchaserAddress.getCity()
+                + tbPurchaserAddress.getTown() == null ? "" : tbPurchaserAddress.getTown()
+                + tbPurchaserAddress.getStreet() == null ? "" : tbPurchaserAddress.getStreet()
+                + tbPurchaserAddress.getBuildingNo() == null ? "" : tbPurchaserAddress.getBuildingNo()).trim();
+        return detailAddress;
+    }
+
+}

+ 63 - 0
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/PurchaserAddressAppController.java

@@ -0,0 +1,63 @@
+package com.pj.tb_purchaser_address;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pj.project4sp.SP;
+import com.pj.tb_purchaser_address.param.TbPurchaserAddressParam;
+import com.pj.utils.sg.AjaxJson;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+/**
+ * Controller: tb_purchaser_address -- 收购商个人地址管理表
+ * @author qzy 
+ */
+@RestController
+@RequestMapping("/app/TbPurchaserAddress/")
+public class PurchaserAddressAppController {
+
+	/** 底层 Service 对象 */
+	@Autowired
+	TbPurchaserAddressService tbPurchaserAddressService;
+
+	/** 增 */  
+	@RequestMapping("appAdd")
+	@SaCheckPermission(TbPurchaserAddress.PERMISSION_CODE_ADD)
+	public AjaxJson add(@Validated @RequestBody TbPurchaserAddressParam t){
+		boolean b = tbPurchaserAddressService.appAdd(t);
+		if(b)return AjaxJson.getSuccess("地址添加成功!");
+		return AjaxJson.getSuccess("地址添加失败!");
+	}
+
+	/** 删 */  
+	@RequestMapping("appDelete")
+	@SaCheckPermission(TbPurchaserAddress.PERMISSION_CODE_DEL)
+	public AjaxJson delete(@RequestBody List<Long> ids){
+		 tbPurchaserAddressService.appDelete(ids);
+		return AjaxJson.getSuccess();
+	}
+	
+	/** 改 */  
+	@RequestMapping("appUpdate")
+	@SaCheckPermission(TbPurchaserAddress.PERMISSION_CODE_EDIT)
+	public AjaxJson update(@Validated @RequestBody TbPurchaserAddressParam t){
+		tbPurchaserAddressService.appUpdate(t);
+		return AjaxJson.getSuccess();
+	}
+
+	/** 查集合 - 仅查询当前登陆人的地址信息 */
+	@RequestMapping("selectOwnAddress")
+		@SaCheckPermission(TbPurchaserAddress.PERMISSION_CODE)
+	public AjaxJson selectOwnAddress() {
+		SoMap so = SoMap.getRequestSoMap();
+		List<TbPurchaserAddress> list = tbPurchaserAddressService.selectOwnAddress(so.startPage());
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
+
+}

+ 95 - 0
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddress.java

@@ -0,0 +1,95 @@
+package com.pj.tb_purchaser_address;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.EqualsAndHashCode;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * Model: tb_purchaser_address -- 收购商个人地址管理表
+ * @author qzy 
+ */
+@Data
+@Accessors(chain = true)
+@TableName(TbPurchaserAddress.TABLE_NAME)
+@EqualsAndHashCode(callSuper = false)
+public class TbPurchaserAddress extends Model<TbPurchaserAddress> implements Serializable {
+
+	// ---------- 模块常量 ----------
+	/**
+	 * 序列化版本id 
+	 */
+	private static final long serialVersionUID = 1L;	
+	/**
+	 * 此模块对应的表名 
+	 */
+	public static final String TABLE_NAME = "tb_purchaser_address";	
+	/**
+	 * 此模块对应的权限码 
+	 */
+	public static final String PERMISSION_CODE = "tb-purchaser-address";
+	public static final String PERMISSION_CODE_ADD = "tb-purchaser-address-add";
+	public static final String PERMISSION_CODE_EDIT = "tb-purchaser-address-edit";
+	public static final String PERMISSION_CODE_DEL = "tb-purchaser-address-del";
+
+
+
+
+	// ---------- 表中字段 ----------
+	/**
+	 * 收购商地址表主键ID 
+	 */
+	@TableId(type = IdType.AUTO)
+	private Integer id;	
+
+	/**
+	 * 该地址拥有者主键 
+	 */
+	private Long owner;	
+
+	/**
+	 * 省 
+	 */
+	private String province;	
+
+	/**
+	 * 市 
+	 */
+	private String city;	
+
+	/**
+	 * 镇/区 
+	 */
+	private String town;	
+
+	/**
+	 * 街道 
+	 */
+	private String street;	
+
+	/**
+	 * 楼号 
+	 */
+	private String buildingNo;	
+
+	/**
+	 * 地址全称 
+	 */
+	private String addressName;	
+
+	/**
+	 * 邮编 
+	 */
+	private Integer postNum;	
+
+
+
+
+
+	
+
+
+}

+ 85 - 0
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressController.java

@@ -0,0 +1,85 @@
+package com.pj.tb_purchaser_address;
+
+import java.util.List;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import com.pj.utils.sg.*;
+import com.pj.project4sp.SP;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+
+/**
+ * Controller: tb_purchaser_address -- 收购商个人地址管理表
+ * @author qzy 
+ */
+@RestController
+@RequestMapping("/TbPurchaserAddress/")
+public class TbPurchaserAddressController {
+
+	/** 底层 Service 对象 */
+	@Autowired
+	TbPurchaserAddressService tbPurchaserAddressService;
+
+	/** 增 */  
+	@RequestMapping("add")
+	@SaCheckPermission(TbPurchaserAddress.PERMISSION_CODE_ADD)
+	public AjaxJson add(TbPurchaserAddress t){
+		tbPurchaserAddressService.add(t);
+		t = tbPurchaserAddressService.getById(SP.publicMapper.getPrimarykey());
+		return AjaxJson.getSuccessData(t);
+	}
+
+	/** 删 */  
+	@RequestMapping("delete")
+	@SaCheckPermission(TbPurchaserAddress.PERMISSION_CODE_DEL)
+	public AjaxJson delete(Long id){
+		 tbPurchaserAddressService.delete(id);
+		return AjaxJson.getSuccess();
+	}
+	
+	/** 删 - 根据id列表 */  
+	@RequestMapping("deleteByIds")
+	@SaCheckPermission(TbPurchaserAddress.PERMISSION_CODE_DEL)
+	public AjaxJson deleteByIds(){
+		List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class); 
+		int line = SP.publicMapper.deleteByIds(TbPurchaserAddress.TABLE_NAME, ids);
+		return AjaxJson.getByLine(line);
+	}
+	
+	/** 改 */  
+	@RequestMapping("update")
+	@SaCheckPermission(TbPurchaserAddress.PERMISSION_CODE_EDIT)
+	public AjaxJson update(TbPurchaserAddress t){
+		tbPurchaserAddressService.update(t);
+		return AjaxJson.getSuccess();
+	}
+
+	/** 查 - 根据id */  
+	@RequestMapping("getById")
+		@SaCheckPermission(TbPurchaserAddress.PERMISSION_CODE)
+	public AjaxJson getById(Integer id){
+		TbPurchaserAddress t = tbPurchaserAddressService.getById(id);
+		return AjaxJson.getSuccessData(t);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
+	@RequestMapping("getList")
+		@SaCheckPermission(TbPurchaserAddress.PERMISSION_CODE)
+	public AjaxJson getList() { 
+		SoMap so = SoMap.getRequestSoMap();
+		List<TbPurchaserAddress> list = tbPurchaserAddressService.getList(so.startPage());
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
+	
+	
+	
+	
+
+	
+	
+	
+
+}

+ 30 - 0
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressMapper.java

@@ -0,0 +1,30 @@
+package com.pj.tb_purchaser_address;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+
+import com.pj.utils.so.*;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Mapper: tb_purchaser_address -- 收购商个人地址管理表
+ * @author qzy 
+ */
+
+@Mapper
+@Repository
+public interface TbPurchaserAddressMapper extends BaseMapper <TbPurchaserAddress> {
+
+
+
+	/**
+	 * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+	 * @param so 参数集合 
+	 * @return 数据列表 
+	 */
+	List<TbPurchaserAddress> getList(SoMap so);
+
+
+}

+ 52 - 0
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressMapper.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.pj.tb_purchaser_address.TbPurchaserAddressMapper">
+
+
+
+
+	<!-- ================================== 查询相关 ================================== -->
+	<!-- select id, owner, province, city, town, street, building_no, address_name, post_num from tb_purchaser_address  -->
+	
+	<!-- 通用映射:自动模式 -->
+	<resultMap id="model" autoMapping="true" type="com.pj.tb_purchaser_address.TbPurchaserAddress"></resultMap>
+	
+	<!-- 公共查询sql片段 -->
+	<sql id="select_sql">
+		select * 
+		from tb_purchaser_address 
+	</sql>
+
+	
+	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
+	<select id="getList" resultMap="model">
+		<include refid="select_sql"></include>
+		<where>
+			<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("owner") '> and owner = #{owner} </if>
+		</where>
+		order by
+		<choose>
+			<when test='sortType == 1'> id desc </when>
+			<when test='sortType == 2'> owner desc </when>
+			<when test='sortType == 3'> province desc </when>
+			<when test='sortType == 4'> city desc </when>
+			<when test='sortType == 5'> town desc </when>
+			<when test='sortType == 6'> street desc </when>
+			<when test='sortType == 7'> building_no desc </when>
+			<when test='sortType == 8'> address_name desc </when>
+			<when test='sortType == 9'> post_num desc </when>
+			<otherwise> id desc </otherwise>
+		</choose>
+	</select>
+	
+	
+	
+	
+	
+	
+	
+	
+	
+
+</mapper>

+ 125 - 0
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressService.java

@@ -0,0 +1,125 @@
+package com.pj.tb_purchaser_address;
+
+import java.util.List;
+
+import com.pj.current.dto.APPLoginUserInfo;
+import com.pj.current.satoken.StpAPPUserUtil;
+import com.pj.tb_purchaser_address.param.TbPurchaserAddressParam;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+import com.pj.utils.sg.*;
+
+/**
+ * Service: tb_purchaser_address -- 收购商个人地址管理表
+ * @author qzy 
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class TbPurchaserAddressService extends ServiceImpl<TbPurchaserAddressMapper, TbPurchaserAddress> implements IService<TbPurchaserAddress>{
+
+	/** 底层 Mapper 对象 */
+	@Autowired
+	TbPurchaserAddressMapper tbPurchaserAddressMapper;
+
+	@Autowired
+	private MethodPurchaserAddressService methodPurchaserService;
+
+	/** 增 */
+	void add(TbPurchaserAddress t){
+		save(t);
+	}
+
+	/** 删 */
+	void delete(Long id){
+		removeById(id);
+	}
+
+	/** 改 */
+	void update(TbPurchaserAddress t){
+		updateById(t);
+
+	}
+
+	/** 查 */
+	TbPurchaserAddress getById(Integer id){
+		return super.getById(id);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
+	List<TbPurchaserAddress> getList(SoMap so) {
+		return tbPurchaserAddressMapper.getList(so);	
+	}
+
+	/** 查集合 - 仅查询当前登陆人的地址信息 */
+	List<TbPurchaserAddress> selectOwnAddress(SoMap so) {
+		//获取当前登陆人ID
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if(appLoginInfo == null)throw new RuntimeException("当前登录账号信息已失效!");
+		so.set("owner",appLoginInfo.getLoginId());
+		return tbPurchaserAddressMapper.getList(so);
+	}
+
+	/** app增地址 */
+	boolean appAdd(TbPurchaserAddressParam t){
+		//获取当前登陆人ID
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if(appLoginInfo == null)throw new RuntimeException("当前登录账号信息已失效!");
+		TbPurchaserAddress tbPurchaserAddress = new TbPurchaserAddress();
+		BeanUtils.copyProperties(t,tbPurchaserAddress);
+		//地址所属人
+		tbPurchaserAddress.setOwner(appLoginInfo.getLoginId());
+		//地址全称  省 市 镇/区 街道 楼号  邮编
+		String addressString = methodPurchaserService.addressString(tbPurchaserAddress);
+		tbPurchaserAddress.setAddressName(addressString);
+		boolean save = save(tbPurchaserAddress);
+		return save;
+	}
+
+
+	/** app改地址 */
+	void appUpdate(TbPurchaserAddressParam t){
+		//获取当前登陆人ID
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if(appLoginInfo == null)throw new RuntimeException("当前登录账号信息已失效!");
+		//安全判定
+		if(!appLoginInfo.getLoginId().toString().equals(t.getOwner().toString())){
+			throw new RuntimeException("非法操作!");
+		}
+		//数据拷贝
+		TbPurchaserAddress tbPurchaserAddress = new TbPurchaserAddress();
+		BeanUtils.copyProperties(t,tbPurchaserAddress);
+		//拼接详细地址
+		String addressString = methodPurchaserService.addressString(tbPurchaserAddress);
+		//保存
+		t.setAddressName(addressString);
+		updateById(tbPurchaserAddress);
+
+	}
+
+	/** 删 */
+	void appDelete(List<Long> ids){
+		if(ids.size() == 0)return;
+		//获取登陆人
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if(appLoginInfo == null)throw new RuntimeException("当前登录账号信息已失效!");
+		//查询验证
+		ids.forEach(item -> {
+			TbPurchaserAddress tbPurchaserAddress = tbPurchaserAddressMapper.selectById(item);
+			if(tbPurchaserAddress != null){
+				//验证
+				if(tbPurchaserAddress.getOwner().toString().equals(appLoginInfo.getLoginId().toString())){
+					//验证通过删除
+					removeById(item);
+				}
+				throw new RuntimeException("非法操作!");
+			}
+		});
+	}
+
+
+}

+ 27 - 0
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressUtil.java

@@ -0,0 +1,27 @@
+package com.pj.tb_purchaser_address;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 工具类:tb_purchaser_address -- 收购商个人地址管理表
+ * @author qzy 
+ *
+ */
+@Component
+public class TbPurchaserAddressUtil {
+
+	
+	/** 底层 Mapper 对象 */
+	public static TbPurchaserAddressMapper tbPurchaserAddressMapper;
+	@Autowired
+	private void setTbPurchaserAddressMapper(TbPurchaserAddressMapper tbPurchaserAddressMapper) {
+		TbPurchaserAddressUtil.tbPurchaserAddressMapper = tbPurchaserAddressMapper;
+	}
+	
+
+
+	
+	
+	
+}

+ 84 - 0
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/param/TbPurchaserAddressParam.java

@@ -0,0 +1,84 @@
+package com.pj.tb_purchaser_address.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * Model: tb_purchaser_address -- 收购商个人地址管理表  入参表
+ * @author qzy 
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TbPurchaserAddressParam {
+
+
+
+	// ---------- 表中字段 ----------
+	/**
+	 * 收购商地址表主键ID 
+	 */
+	private Integer id;
+
+	/**
+	 * 该地址拥有者主键 
+	 */
+	@NotNull(message = "地址所属人不能为空")
+	private Long owner;	
+
+	/**
+	 * 省 
+	 */
+	@NotNull(message = "省不能为空")
+	private String province;	
+
+	/**
+	 * 市 
+	 */
+	@NotNull(message = "市不能为空")
+	private String city;	
+
+	/**
+	 * 镇/区 
+	 */
+	@NotNull(message = "镇/区不能为空")
+	private String town;	
+
+	/**
+	 * 街道 
+	 */
+	private String street;	
+
+	/**
+	 * 楼号 
+	 */
+	private String buildingNo;	
+
+	/**
+	 * 地址全称 
+	 */
+	private String addressName;	
+
+	/**
+	 * 邮编 
+	 */
+	private Integer postNum;	
+
+
+
+
+
+	
+
+
+}

+ 1 - 5
sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserController.java

@@ -3,18 +3,14 @@ package com.pj.project.app_user;
 import java.util.List;
 
 import com.pj.api.dto.AppUserDto;
-import com.pj.project.app_user.dto.ForgetPasswordDto;
-import com.pj.project.app_user.dto.RegisterDto;
+
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import com.pj.utils.sg.*;
 import com.pj.project4sp.SP;
 
-import com.pj.current.satoken.StpUserUtil;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 
 

+ 10 - 3
sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserService.java

@@ -7,6 +7,8 @@ import java.util.stream.Collectors;
 import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.pj.api.dto.AppUserDto;
+import com.pj.current.dto.APPLoginUserInfo;
+import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.project.app_user.dto.ForgetPasswordDto;
 import com.pj.project.app_user.dto.RegisterDto;
@@ -120,10 +122,12 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
 				appUserMapper.deleteById(item);
 			});
 		}
-		//2.todo:手机验证码
+		//2.校验密码
+		if(!registerDto.getPassword().equals(registerDto.getRePassword()))throw new RuntimeException("两次密码校验不通过!");
+		//3.todo:手机验证码
 
 
-		//3.开始新增
+		//4.开始新增
 		AppUser appUser = new AppUser();
 		//手机号
 		appUser.setPhone(phone);
@@ -191,7 +195,10 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
 		map.put("per_list", per_list);
 		map.put("tokenInfo", StpUtil.getTokenInfo());
 		StpUserUtil.cachePerList(per_list);
-
+		APPLoginUserInfo info=new APPLoginUserInfo();
+		info.setLoginId(appUser.getId());
+		info.setLoginName(appUser.getName());
+		StpAPPUserUtil.cacheAPPLoginInfo(info);
 		return AjaxJson.getSuccessData(map);
 	}
 

+ 3 - 0
sp-service/sp-admin/src/main/java/com/pj/project/app_user/dto/RegisterDto.java

@@ -23,6 +23,9 @@ public class RegisterDto {
     /** 登陆密码 */
     @NotNull(message = "密码不能为空!")
     private String password;
+    /** 登陆密码 */
+    @NotNull(message = "验证密码不能为空!")
+    private String rePassword;
     /** 昵称 */
     private String nickName;
 }

+ 15 - 5
sp-service/transport-server/src/main/java/com/pj/project/tb_logistics/TbLogisticsController.java

@@ -1,6 +1,8 @@
 package com.pj.project.tb_logistics;
 
 import java.util.List;
+
+import com.pj.api.dto.TbLogisticsDto;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -139,11 +141,19 @@ public class TbLogisticsController {
 		int line = SP.publicMapper.updateColumnById(TbLogistics.TABLE_NAME, "delete_status", value, id);
 		return AjaxJson.getByLine(line);
 	}
-	
-	
 
-	
-	
-	
+	/*-----               正常业务接口👆👆    不越界     rpc远程调用 👇👇                     -----*/
+
+
+
+	/** 查 - 根据id */
+	@RequestMapping("rpc/selectByOrderId")
+	@SaCheckPermission(TbLogistics.PERMISSION_CODE)
+	public TbLogisticsDto selectByOrderId(Long orderId){
+		TbLogisticsDto t = tbLogisticsService.selectByOrderId(orderId);
+		return t;
+	}
+
+
 
 }

+ 17 - 1
sp-service/transport-server/src/main/java/com/pj/project/tb_logistics/TbLogisticsService.java

@@ -1,7 +1,12 @@
 package com.pj.project.tb_logistics;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.pj.api.dto.TbLogisticsDto;
+import com.pj.enummj.DeleteStatus;
 import com.pj.utils.so.SoMap;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -46,6 +51,17 @@ public class TbLogisticsService extends ServiceImpl<TbLogisticsMapper, TbLogisti
 		return tbLogisticsMapper.getList(so);	
 	}
 
-
+	/**
+	 * 通过订单ID表查询物流
+	 */
+	TbLogisticsDto selectByOrderId(Long orderId){
+		List<TbLogistics> tbLogistics = tbLogisticsMapper.selectList(new LambdaQueryWrapper<TbLogistics>().eq(TbLogistics::getOrdersId, orderId).eq(TbLogistics::getDeleteStatus, DeleteStatus.DELETE_STATUS_ON.getCode()));
+		if(tbLogistics.size() == 0)return null;
+		if(tbLogistics.size() > 1)throw new RuntimeException("当前订单信息存在异常!");
+		//创建返回值对象
+		TbLogisticsDto tbLogisticsDto = new TbLogisticsDto();
+		BeanUtils.copyProperties(tbLogistics.get(0),tbLogisticsDto);
+		return tbLogisticsDto;
+	}
 
 }