Ver Fonte

Merge branch 'dev' of http://git.aseanbusiness.cn/qzyReal/market-server into dev

qzyReal há 1 ano atrás
pai
commit
d540e8caf2
83 ficheiros alterados com 4327 adições e 1358 exclusões
  1. 17 4
      sp-core/sp-api/src/main/java/com/pj/api/client/level_one_server/LevelOneServerInterface.java
  2. 37 11
      sp-core/sp-api/src/main/java/com/pj/api/client/level_one_server/LevelOneServerInterfaceFallback.java
  3. 459 0
      sp-core/sp-api/src/main/java/com/pj/api/dto/GoodsTransitDto.java
  4. 801 0
      sp-core/sp-api/src/main/java/com/pj/api/dto/OrderDto.java
  5. 65 0
      sp-core/sp-api/src/main/java/com/pj/api/dto/PeopleDto.java
  6. 1 1
      sp-core/sp-base/src/main/java/com/pj/aliyun/sms/AliyunInformSmsService.java
  7. 3 0
      sp-core/sp-base/src/main/java/com/pj/current/dto/APPLoginUserInfo.java
  8. 23 0
      sp-core/sp-base/src/main/java/com/pj/enummj/ApplyStatus.java
  9. 1 1
      sp-core/sp-base/src/main/java/com/pj/enummj/GoodsStatus.java
  10. 4 1
      sp-core/sp-base/src/main/java/com/pj/utils/sg/AjaxJson.java
  11. 11 0
      sp-service/level-one-server/src/main/java/com/pj/tb_enterprise/TbEnterpriseAppController.java
  12. 9 0
      sp-service/level-one-server/src/main/java/com/pj/tb_enterprise/TbEnterpriseService.java
  13. 53 0
      sp-service/level-one-server/src/main/java/com/pj/tb_goods/AppTbGoodsController.java
  14. 1 1
      sp-service/level-one-server/src/main/java/com/pj/tb_goods/TbGoodsMapper.xml
  15. 2 1
      sp-service/level-one-server/src/main/java/com/pj/tb_goods/TbGoodsService.java
  16. 8 6
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/MethodGoodsCartService.java
  17. 1 0
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/TbGoodsCart.java
  18. 48 18
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/TbGoodsCartApiController.java
  19. 1 0
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/TbGoodsCartMapper.xml
  20. 10 5
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/TbGoodsCartService.java
  21. 4 3
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/dto/GoodsCartInfoDto.java
  22. 1 0
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/vo/GoodsCartVo.java
  23. 67 37
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_transit/GoodsTransitAppController.java
  24. 18 1
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_transit/MethodGoodsTransitService.java
  25. 68 10
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_transit/TbGoodsTransitService.java
  26. 3 0
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_transit/param/PurchaseLevelOneGoodsTransitParam.java
  27. 1 2
      sp-service/level-one-server/src/main/java/com/pj/tb_order/MethodOrderService.java
  28. 12 4
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrder.java
  29. 62 4
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderAppController.java
  30. 9 9
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderController.java
  31. 16 12
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderMapper.xml
  32. 149 4
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderService.java
  33. 9 1
      sp-service/level-one-server/src/main/java/com/pj/tb_people/TbPeople.java
  34. 36 9
      sp-service/level-one-server/src/main/java/com/pj/tb_people/TbPeopleService.java
  35. 1 1
      sp-service/level-one-server/src/main/java/com/pj/tb_port_news/TbPortNews.java
  36. 27 28
      sp-service/level-one-server/src/main/java/com/pj/tb_port_news/TbPortNewsAppController.java
  37. 31 31
      sp-service/level-one-server/src/main/java/com/pj/tb_port_news/TbPortNewsMapper.xml
  38. 127 121
      sp-service/level-one-server/src/main/java/com/pj/tb_port_news/TbPortNewsService.java
  39. 51 0
      sp-service/level-one-server/src/main/java/com/pj/tb_trade_area/TbTradeAreaAppController.java
  40. 27 27
      sp-service/level-one-server/src/main/java/com/pj/tb_trade_area/TbTradeAreaMapper.xml
  41. 75 74
      sp-service/level-two-server/src/main/java/com/pj/tb_demand_quotation/AppTbDemandQuotationController.java
  42. 22 22
      sp-service/level-two-server/src/main/java/com/pj/tb_demand_quotation/TbDemandQuotation.java
  43. 108 84
      sp-service/level-two-server/src/main/java/com/pj/tb_demand_quotation/TbDemandQuotationService.java
  44. 8 5
      sp-service/level-two-server/src/main/java/com/pj/tb_demand_quotation/param/DemandQuotationParam.java
  45. 121 91
      sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/AppTbGoodsDemandController.java
  46. 47 18
      sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/MethodGoodsDemandService.java
  47. 99 26
      sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/TbGoodsDemand.java
  48. 30 23
      sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/TbGoodsDemandMapper.xml
  49. 62 23
      sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/TbGoodsDemandService.java
  50. 65 6
      sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/vo/GoodsDemandVo.java
  51. 69 0
      sp-service/level-two-server/src/main/java/com/pj/tb_orders/MethodOrdersService.java
  52. 18 9
      sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrders.java
  53. 31 16
      sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrdersApiController.java
  54. 62 223
      sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrdersDto.java
  55. 17 14
      sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrdersMapper.xml
  56. 93 15
      sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrdersService.java
  57. 2 1
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser/TbPurchaserService.java
  58. 0 28
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/MethodPurchaserAddressService.java
  59. 56 45
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/PurchaserAddressAppController.java
  60. 73 77
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddress.java
  61. 13 8
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressMapper.java
  62. 19 107
      sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressService.java
  63. 53 43
      sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserApiController.java
  64. 11 3
      sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserService.java
  65. 4 3
      sp-service/sp-admin/src/main/java/com/pj/project/app_user/dto/RegisterDto.java
  66. 80 0
      sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/AppCarRecordController.java
  67. 151 0
      sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecord.java
  68. 22 22
      sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecordController.java
  69. 30 0
      sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecordMapper.java
  70. 77 0
      sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecordMapper.xml
  71. 66 0
      sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecordService.java
  72. 27 0
      sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecordUtil.java
  73. 1 1
      sp-service/transport-server/src/main/java/com/pj/project/tb_favorite_contacts/TbFavoriteContacts.java
  74. 1 1
      sp-service/transport-server/src/main/java/com/pj/project/tb_favorite_contacts/TbFavoriteContactsMapper.xml
  75. 3 1
      sp-service/transport-server/src/main/java/com/pj/project/tb_logistics/TbLogistics.java
  76. 1 1
      sp-service/transport-server/src/main/java/com/pj/project/tb_logistics/TbLogisticsService.java
  77. 112 0
      sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/MethodVehicleService.java
  78. 44 11
      sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/TbVehicleAppController.java
  79. 102 3
      sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/TbVehicleService.java
  80. 23 0
      sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/param/FailDriverResultParam.java
  81. 56 0
      sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/param/MakeCarRecordParam.java
  82. 98 0
      sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/param/SucessDriverResultParam.java
  83. 1 1
      sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/vo/TbVehicleVo.java

+ 17 - 4
sp-core/sp-api/src/main/java/com/pj/api/client/level_one_server/LevelOneServerInterface.java

@@ -2,15 +2,13 @@ package com.pj.api.client.level_one_server;
 
 import com.pj.api.FeignInterceptor;
 import com.pj.api.consts.FeignConsts;
-import com.pj.api.dto.EnterpriseDto;
-import com.pj.api.dto.GoodsDto;
-import com.pj.api.dto.GroupDto;
-import com.pj.api.dto.PeopleDto;
+import com.pj.api.dto.*;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -24,6 +22,21 @@ import java.util.List;
 )
 public interface LevelOneServerInterface {
 
+    /** 根据ID获取一级市场商户信息 */
+    @RequestMapping("/app/TbEnterprise/rpc/getEnterpriseById")
+    public EnterpriseDto getEnterpriseById(@RequestParam("enterpriseId")Long enterpriseId);
+
+    /** 根据商户ID和过审商品表ID查询过审商品 */
+    @RequestMapping("/app/TbGoodsTransit/rpc/getGoodsTransitById")
+    public GoodsTransitDto getGoodsTransitById(@RequestParam("goodsTransitId") Long goodsTransitId,@RequestParam("enterpriseId") Long enterpriseId);
+
+    /** 查 - 根据id查orderDto */
+    @RequestMapping("/app/TbOrder/rpc/getOrderDtoById")
+    public OrderDto getOrderDtoById(@RequestParam("orderId") Long orderId);
+
+    @RequestMapping("/app/TbOrder/rpc/selectOrderList")
+    public List<OrderDto> selectOrderList(@RequestParam("currDay") Date currDay, @RequestParam("appUserId") Long appUserId);
+
     @RequestMapping("/TbPeople/rpc/getPeopleList")
     public List<PeopleDto> getPeopleList(@RequestParam("groupId")Long groupId);
 

+ 37 - 11
sp-core/sp-api/src/main/java/com/pj/api/client/level_one_server/LevelOneServerInterfaceFallback.java

@@ -1,15 +1,13 @@
 package com.pj.api.client.level_one_server;
 
 import com.pj.api.client.admin.AdminInterfaceFallback;
-import com.pj.api.dto.EnterpriseDto;
-import com.pj.api.dto.GoodsDto;
-import com.pj.api.dto.GroupDto;
-import com.pj.api.dto.PeopleDto;
+import com.pj.api.dto.*;
 import feign.hystrix.FallbackFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -25,51 +23,79 @@ public class LevelOneServerInterfaceFallback implements FallbackFactory<LevelOne
     public LevelOneServerInterface create(Throwable throwable) {
         return new LevelOneServerInterface() {
             @Override
+            public EnterpriseDto getEnterpriseById(Long enterpriseId) {
+                System.out.println(throwable.getMessage());
+                log.error("查询一级市场商户错误,当前ID:{},错误信息是:{}",enterpriseId,throwable.getMessage());
+                return null;
+            }
+
+            @Override
+            public GoodsTransitDto getGoodsTransitById(Long goodsTransitId, Long enterpriseId) {
+                System.out.println(throwable.getMessage());
+                log.error("查询一级市场过审商品错误,过审商品表ID:{},一级市场商户ID:{},错误信息是:{}",goodsTransitId,enterpriseId,throwable.getMessage());
+                return null;
+            }
+
+            @Override
+            public OrderDto getOrderDtoById(Long orderId) {
+                System.out.println(throwable.getMessage());
+                log.error("查询一级市场订单错误,当前ID:{},错误信息是:{}",orderId,throwable.getMessage());
+                return null;
+            }
+
+            @Override
+            public List<OrderDto> selectOrderList(Date currDay, Long appUserId) {
+                System.out.println(throwable.getMessage());
+                log.error("查询一级市场订单列表错误,当前日:{},当前用户ID:{},错误信息是:{}",currDay,appUserId,throwable.getMessage());
+                return null;
+            }
+
+            @Override
             public List<PeopleDto> getPeopleList(Long groupId) {
                 System.out.println(throwable.getMessage());
-                log.error("根据groupId查询旗下所有边民错误:{},错误信息是{}",groupId,throwable.getMessage());
+                log.error("根据groupId查询旗下所有边民错误:{},错误信息是:{}",groupId,throwable.getMessage());
                 return null;
             }
 
             @Override
             public GoodsDto getByGoodsId(Long goodsId) {
                 System.out.println(throwable.getMessage());
-                log.error("根据goodsId查询海关允许销售商品错误:{},错误信息是{}",goodsId,throwable.getMessage());
+                log.error("根据goodsId查询海关允许销售商品错误:{},错误信息是:{}",goodsId,throwable.getMessage());
                 return null;
             }
 
             @Override
             public PeopleDto getRpcById(Long peopleId) {
                 System.out.println(throwable.getMessage());
-                log.error("互市区组长需求报价错误:{},错误信息是{}",peopleId,throwable.getMessage());
+                log.error("互市区组长需求报价错误:{},错误信息是:{}",peopleId,throwable.getMessage());
                 return null;
             }
 
             @Override
             public GroupDto getRpcById(String id) {
                 System.out.println(throwable.getMessage());
-                log.error("互市区组长错误:{},错误信息是{}",id,throwable.getMessage());
+                log.error("互市区组长错误:{},错误信息是:{}",id,throwable.getMessage());
                 return null;
             }
 
             @Override
             public boolean enterpriseDto(EnterpriseDto enterpriseDto) {
                 System.out.println(throwable.getMessage());
-                log.error("互市区商家信息添加错误:{},错误信息是{}",enterpriseDto,throwable.getMessage());
+                log.error("互市区商家信息添加错误:{},错误信息是:{}",enterpriseDto,throwable.getMessage());
                 return false;
             }
 
             @Override
             public boolean groupDto(GroupDto groupDto) {
                 System.out.println(throwable.getMessage());
-                log.error("互市区组长信息添加错误:{},错误信息是{}",groupDto,throwable.getMessage());
+                log.error("互市区组长信息添加错误:{},错误信息是:{}",groupDto,throwable.getMessage());
                 return false;
             }
 
             @Override
             public boolean peopleDto(PeopleDto peopleDto) {
                 System.out.println(throwable.getMessage());
-                log.error("互市区普通边民信息添加错误:{},错误信息是{}",peopleDto,throwable.getMessage());
+                log.error("互市区普通边民信息添加错误:{},错误信息是:{}",peopleDto,throwable.getMessage());
                 return false;
             }
         };

+ 459 - 0
sp-core/sp-api/src/main/java/com/pj/api/dto/GoodsTransitDto.java

@@ -0,0 +1,459 @@
+package com.pj.api.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+
+/**
+ * @Author Mechrevo
+ * @Date 2023 08 09 15 43
+ **/
+public class GoodsTransitDto {
+
+    private Long id;
+
+    /**
+     * 商户编号
+     */
+    private String merchantId;
+
+    /**
+     * 商户名称
+     */
+    private String merchantName;
+
+    /**
+     * 商品类型
+     */
+    private String goodsType;
+    /**
+     * 商品图片
+     */
+    private String goodsImg;
+
+    /**
+     * 海关商品表主键
+     */
+    private Long goodsId;
+
+    /**
+     * 商品名称
+     */
+    private String goodsName;
+
+    /**
+     * 商品单位(吨、kg、个、柜)
+     */
+    private String goodsUnits;
+
+    /** 互市区名称 */
+    private String tradeAreaName;
+
+    /** 互市区ID */
+    private Long tradeAreaId;
+
+    /**
+     * 净重
+     */
+    private Double netWeight;
+
+    /**
+     * 毛重
+     */
+    private Double grossWeight;
+
+    /**
+     * 商品价格
+     */
+    private Double price;
+
+    /**
+     * 海关申报单号
+     */
+    private String declareOdd;
+
+    /**
+     * 产地(国家)
+     */
+    private String placeOrigin;
+
+    /**
+     * 商品描述
+     */
+    private String description;
+
+    /**
+     * 库存数量
+     */
+    private Integer stock;
+
+    /**
+     * 商品状态(0=下架,1=在售)
+     */
+    private Integer goodsStatus;
+
+    /**
+     * 审核状态(0=待审核,1=通过,2=不通过)
+     */
+    private Integer auditStatus;
+
+    /**
+     * 审核时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date auditTime;
+
+    /**
+     * 审核意见
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+
+    /**
+     * 创建人编号
+     */
+    private String createBy;
+
+    /**
+     * 创建人名称
+     */
+    private String createName;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updateTime;
+
+    /**
+     * 更新人编号
+     */
+    private String updateBy;
+
+    /**
+     * 更新人名称
+     */
+    private String updateName;
+    /**
+     * 商铺名称
+     */
+    private String shopName;
+    /**
+     * 商铺ID
+     */
+    private Long shopId;
+
+    /**
+     * 删除状态(0=禁用,1=启用)
+     */
+    private Integer deleteStatus;
+
+    /**
+     * 是否已被下单[0=未被下单,1=已被下单]
+     */
+    private Integer isOrders;
+
+    /**
+     * 商铺确认情况[0=待确认,1=已确认,2=拒绝]
+     */
+    private Integer enterpriseConfirm;
+
+    public GoodsTransitDto(Long id, String merchantId, String merchantName, String goodsType, String goodsImg, Long goodsId, String goodsName, String goodsUnits, String tradeAreaName, Long tradeAreaId, Double netWeight, Double grossWeight, Double price, String declareOdd, String placeOrigin, String description, Integer stock, Integer goodsStatus, Integer auditStatus, Date auditTime, String remark, Date createTime, String createBy, String createName, Date updateTime, String updateBy, String updateName, String shopName, Long shopId, Integer deleteStatus, Integer isOrders, Integer enterpriseConfirm) {
+        this.id = id;
+        this.merchantId = merchantId;
+        this.merchantName = merchantName;
+        this.goodsType = goodsType;
+        this.goodsImg = goodsImg;
+        this.goodsId = goodsId;
+        this.goodsName = goodsName;
+        this.goodsUnits = goodsUnits;
+        this.tradeAreaName = tradeAreaName;
+        this.tradeAreaId = tradeAreaId;
+        this.netWeight = netWeight;
+        this.grossWeight = grossWeight;
+        this.price = price;
+        this.declareOdd = declareOdd;
+        this.placeOrigin = placeOrigin;
+        this.description = description;
+        this.stock = stock;
+        this.goodsStatus = goodsStatus;
+        this.auditStatus = auditStatus;
+        this.auditTime = auditTime;
+        this.remark = remark;
+        this.createTime = createTime;
+        this.createBy = createBy;
+        this.createName = createName;
+        this.updateTime = updateTime;
+        this.updateBy = updateBy;
+        this.updateName = updateName;
+        this.shopName = shopName;
+        this.shopId = shopId;
+        this.deleteStatus = deleteStatus;
+        this.isOrders = isOrders;
+        this.enterpriseConfirm = enterpriseConfirm;
+    }
+
+    public GoodsTransitDto() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getMerchantId() {
+        return merchantId;
+    }
+
+    public void setMerchantId(String merchantId) {
+        this.merchantId = merchantId;
+    }
+
+    public String getMerchantName() {
+        return merchantName;
+    }
+
+    public void setMerchantName(String merchantName) {
+        this.merchantName = merchantName;
+    }
+
+    public String getGoodsType() {
+        return goodsType;
+    }
+
+    public void setGoodsType(String goodsType) {
+        this.goodsType = goodsType;
+    }
+
+    public String getGoodsImg() {
+        return goodsImg;
+    }
+
+    public void setGoodsImg(String goodsImg) {
+        this.goodsImg = goodsImg;
+    }
+
+    public Long getGoodsId() {
+        return goodsId;
+    }
+
+    public void setGoodsId(Long goodsId) {
+        this.goodsId = goodsId;
+    }
+
+    public String getGoodsName() {
+        return goodsName;
+    }
+
+    public void setGoodsName(String goodsName) {
+        this.goodsName = goodsName;
+    }
+
+    public String getGoodsUnits() {
+        return goodsUnits;
+    }
+
+    public void setGoodsUnits(String goodsUnits) {
+        this.goodsUnits = goodsUnits;
+    }
+
+    public String getTradeAreaName() {
+        return tradeAreaName;
+    }
+
+    public void setTradeAreaName(String tradeAreaName) {
+        this.tradeAreaName = tradeAreaName;
+    }
+
+    public Long getTradeAreaId() {
+        return tradeAreaId;
+    }
+
+    public void setTradeAreaId(Long tradeAreaId) {
+        this.tradeAreaId = tradeAreaId;
+    }
+
+    public Double getNetWeight() {
+        return netWeight;
+    }
+
+    public void setNetWeight(Double netWeight) {
+        this.netWeight = netWeight;
+    }
+
+    public Double getGrossWeight() {
+        return grossWeight;
+    }
+
+    public void setGrossWeight(Double grossWeight) {
+        this.grossWeight = grossWeight;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public String getDeclareOdd() {
+        return declareOdd;
+    }
+
+    public void setDeclareOdd(String declareOdd) {
+        this.declareOdd = declareOdd;
+    }
+
+    public String getPlaceOrigin() {
+        return placeOrigin;
+    }
+
+    public void setPlaceOrigin(String placeOrigin) {
+        this.placeOrigin = placeOrigin;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public Integer getStock() {
+        return stock;
+    }
+
+    public void setStock(Integer stock) {
+        this.stock = stock;
+    }
+
+    public Integer getGoodsStatus() {
+        return goodsStatus;
+    }
+
+    public void setGoodsStatus(Integer goodsStatus) {
+        this.goodsStatus = goodsStatus;
+    }
+
+    public Integer getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(Integer auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    public Date getAuditTime() {
+        return auditTime;
+    }
+
+    public void setAuditTime(Date auditTime) {
+        this.auditTime = auditTime;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date 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 Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date 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 String getShopName() {
+        return shopName;
+    }
+
+    public void setShopName(String shopName) {
+        this.shopName = shopName;
+    }
+
+    public Long getShopId() {
+        return shopId;
+    }
+
+    public void setShopId(Long shopId) {
+        this.shopId = shopId;
+    }
+
+    public Integer getDeleteStatus() {
+        return deleteStatus;
+    }
+
+    public void setDeleteStatus(Integer deleteStatus) {
+        this.deleteStatus = deleteStatus;
+    }
+
+    public Integer getIsOrders() {
+        return isOrders;
+    }
+
+    public void setIsOrders(Integer isOrders) {
+        this.isOrders = isOrders;
+    }
+
+    public Integer getEnterpriseConfirm() {
+        return enterpriseConfirm;
+    }
+
+    public void setEnterpriseConfirm(Integer enterpriseConfirm) {
+        this.enterpriseConfirm = enterpriseConfirm;
+    }
+}

+ 801 - 0
sp-core/sp-api/src/main/java/com/pj/api/dto/OrderDto.java

@@ -0,0 +1,801 @@
+package com.pj.api.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+
+/**
+ * 一级市场订单表
+ * @Author Mechrevo
+ * @Date 2023 08 07 11 51
+ **/
+public class OrderDto {
+    /**
+     * 边民或组长取消订单(0=未取消,1=已取消)
+     */
+    private Integer cancelPeople;
+
+    public Integer getCancelPeople() {
+        return cancelPeople;
+    }
+
+    public void setCancelPeople(Integer cancelPeople) {
+        this.cancelPeople = cancelPeople;
+    }
+
+    public OrderDto() {
+    }
+
+    public OrderDto(Integer cancelPeople, Long id, Long tradeAreaId, String tradeAreaName, String addressIds, Long saleMainId, Long groupId, Long goodsId, String tradeNo, Long buyUserId, String buyUserName, String buyUserType, Long enterpriseId, String enterpriseName, Double totalWeight, Double totalPrice, Date tradeTime, Integer tradeStatus, String payType, String settleTime, Double realPrice, Double shouldPrice, Long settleUserId, Long recordUserId, String recordTime, String record, String refundReason, String refundTime, String receiveName, String receivePhone, String receiveAddress, String outTime, String goodsNames, Integer apply, String applyTime, String applyResult, String applyFailReason, String distribution, Integer peopleConfirm, Integer enterpriseConfirm, String pick, Date pickTime, Long shopId, String shopName, Integer send, String sendTime, Long levelTwoOrderId, Date createTime, Long createBy, String createName, Date updateTime, Long updateBy, String updateName, Integer deleteStatus, Integer finishStatus, Integer resaleStatus) {
+        this.cancelPeople = cancelPeople;
+        this.id = id;
+        this.tradeAreaId = tradeAreaId;
+        this.tradeAreaName = tradeAreaName;
+        this.addressIds = addressIds;
+        this.saleMainId = saleMainId;
+        this.groupId = groupId;
+        this.goodsId = goodsId;
+        this.tradeNo = tradeNo;
+        this.buyUserId = buyUserId;
+        this.buyUserName = buyUserName;
+        this.buyUserType = buyUserType;
+        this.enterpriseId = enterpriseId;
+        this.enterpriseName = enterpriseName;
+        this.totalWeight = totalWeight;
+        this.totalPrice = totalPrice;
+        this.tradeTime = tradeTime;
+        this.tradeStatus = tradeStatus;
+        this.payType = payType;
+        this.settleTime = settleTime;
+        this.realPrice = realPrice;
+        this.shouldPrice = shouldPrice;
+        this.settleUserId = settleUserId;
+        this.recordUserId = recordUserId;
+        this.recordTime = recordTime;
+        this.record = record;
+        this.refundReason = refundReason;
+        this.refundTime = refundTime;
+        this.receiveName = receiveName;
+        this.receivePhone = receivePhone;
+        this.receiveAddress = receiveAddress;
+        this.outTime = outTime;
+        this.goodsNames = goodsNames;
+        this.apply = apply;
+        this.applyTime = applyTime;
+        this.applyResult = applyResult;
+        this.applyFailReason = applyFailReason;
+        this.distribution = distribution;
+        this.peopleConfirm = peopleConfirm;
+        this.enterpriseConfirm = enterpriseConfirm;
+        this.pick = pick;
+        this.pickTime = pickTime;
+        this.shopId = shopId;
+        this.shopName = shopName;
+        this.send = send;
+        this.sendTime = sendTime;
+        this.levelTwoOrderId = levelTwoOrderId;
+        this.createTime = createTime;
+        this.createBy = createBy;
+        this.createName = createName;
+        this.updateTime = updateTime;
+        this.updateBy = updateBy;
+        this.updateName = updateName;
+        this.deleteStatus = deleteStatus;
+        this.finishStatus = finishStatus;
+        this.resaleStatus = resaleStatus;
+    }
+
+    private Long id;
+
+    /**
+     *
+     */
+    private Long tradeAreaId;
+
+    /**
+     *
+     */
+    private String tradeAreaName;
+
+    /**
+     *
+     */
+    private String addressIds;
+
+    /**
+     *
+     */
+    private Long saleMainId;
+    /**
+     *
+     */
+    private Long groupId;
+
+    /**
+     *  商品ID
+     */
+    private Long goodsId;
+
+    /**
+     * 订单号
+     */
+    private String tradeNo;
+
+    /**
+     * 买家ID
+     */
+    private Long buyUserId;
+
+    /**
+     * 买家
+     */
+    private String buyUserName;
+
+    /**
+     * 购买用户类型(3=边民,2=组长)
+     */
+    private String buyUserType;
+
+    /**
+     * 商家ID
+     */
+    private Long enterpriseId;
+
+    /**
+     * 商家名称
+     */
+    private String enterpriseName;
+
+    /**
+     * 总重量
+     */
+    private Double totalWeight;
+
+    /**
+     * 总金额
+     */
+    private Double totalPrice;
+
+    /**
+     * 交易时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date tradeTime;
+
+    /**
+     * 交易状态(0=未支付,1=已支付)
+     */
+    private Integer tradeStatus;
+
+    /**
+     * 支付方式(0=金融互助,1=现金刷卡)
+     */
+    private String payType;
+
+    /**
+     * 结算时间
+     */
+    private String settleTime;
+
+    /**
+     * 当前结算金额
+     */
+    private Double realPrice;
+
+    /**
+     * 应结金额
+     */
+    private Double shouldPrice;
+
+    /**
+     * 对账人
+     */
+    private Long settleUserId;
+
+    /**
+     * 对账人员
+     */
+    private Long recordUserId;
+
+    /**
+     * 对账时间
+     */
+    private String recordTime;
+
+    /**
+     * 是否对账(0=否,)
+     */
+    private String record;
+
+    /**
+     * 退款原因
+     */
+    private String refundReason;
+
+    /**
+     * 退款时间
+     */
+    private String refundTime;
+
+    /**
+     *
+     */
+    private String receiveName;
+
+    /**
+     *
+     */
+    private String receivePhone;
+
+    /**
+     *
+     */
+    private String receiveAddress;
+
+    /**
+     * 出互市区时间
+     */
+    private String outTime;
+
+    /**
+     * 商品名称字符串
+     */
+    private String goodsNames;
+
+    /**
+     * 是否申报
+     */
+    private Integer apply;
+
+    /**
+     * 申报时间
+     */
+    private String applyTime;
+
+    /**
+     * 申报结果
+     */
+    private String applyResult;
+
+    /**
+     *
+     */
+    private String applyFailReason;
+
+    /**
+     * 分配方式(0=均分,1=自选数量)
+     */
+    private String distribution;
+
+    /**
+     * 一级市场边民确认(0=待确认,1=是,2=否)[j]
+     */
+    private Integer peopleConfirm;
+    /**
+     * 一级市场商户确认(0=待确认,1=是,2=否)[j]
+     */
+    private Integer enterpriseConfirm;
+
+    /**
+     * 是否接单
+     */
+    private String pick;
+
+    /**
+     * 接单时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss SSS")
+    private Date pickTime;
+
+    /**
+     *
+     */
+    private Long shopId;
+
+    /**
+     *
+     */
+    private String shopName;
+
+    /**
+     * 是否发货
+     */
+    private Integer send;
+
+    /**
+     * 发货时间
+     */
+    private String sendTime;
+
+    /**
+     * 对应二级市场中的收购单ID
+     */
+    private Long levelTwoOrderId;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+
+    /**
+     * 创建人编号
+     */
+    private Long createBy;
+
+    /**
+     * 创建人名称
+     */
+    private String createName;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updateTime;
+
+    /**
+     * 更新人编号
+     */
+    private Long updateBy;
+
+    /**
+     * 更新人名称
+     */
+    private String updateName;
+
+    /**
+     * 删除状态(0=禁用,1=启用)
+     */
+    private Integer deleteStatus;
+
+    /**
+     * 订单状态(0=未完成,1=已完成)
+     */
+    private Integer finishStatus;
+
+    /**
+     * 是否转售(0=未转售,1=已转售)
+     */
+    private Integer resaleStatus;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getTradeAreaId() {
+        return tradeAreaId;
+    }
+
+    public void setTradeAreaId(Long tradeAreaId) {
+        this.tradeAreaId = tradeAreaId;
+    }
+
+    public String getTradeAreaName() {
+        return tradeAreaName;
+    }
+
+    public void setTradeAreaName(String tradeAreaName) {
+        this.tradeAreaName = tradeAreaName;
+    }
+
+    public String getAddressIds() {
+        return addressIds;
+    }
+
+    public void setAddressIds(String addressIds) {
+        this.addressIds = addressIds;
+    }
+
+    public Long getSaleMainId() {
+        return saleMainId;
+    }
+
+    public void setSaleMainId(Long saleMainId) {
+        this.saleMainId = saleMainId;
+    }
+
+    public Long getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(Long groupId) {
+        this.groupId = groupId;
+    }
+
+    public Long getGoodsId() {
+        return goodsId;
+    }
+
+    public void setGoodsId(Long goodsId) {
+        this.goodsId = goodsId;
+    }
+
+    public String getTradeNo() {
+        return tradeNo;
+    }
+
+    public void setTradeNo(String tradeNo) {
+        this.tradeNo = tradeNo;
+    }
+
+    public Long getBuyUserId() {
+        return buyUserId;
+    }
+
+    public void setBuyUserId(Long buyUserId) {
+        this.buyUserId = buyUserId;
+    }
+
+    public String getBuyUserName() {
+        return buyUserName;
+    }
+
+    public void setBuyUserName(String buyUserName) {
+        this.buyUserName = buyUserName;
+    }
+
+    public String getBuyUserType() {
+        return buyUserType;
+    }
+
+    public void setBuyUserType(String buyUserType) {
+        this.buyUserType = buyUserType;
+    }
+
+    public Long getEnterpriseId() {
+        return enterpriseId;
+    }
+
+    public void setEnterpriseId(Long enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+
+    public String getEnterpriseName() {
+        return enterpriseName;
+    }
+
+    public void setEnterpriseName(String enterpriseName) {
+        this.enterpriseName = enterpriseName;
+    }
+
+    public Double getTotalWeight() {
+        return totalWeight;
+    }
+
+    public void setTotalWeight(Double totalWeight) {
+        this.totalWeight = totalWeight;
+    }
+
+    public Double getTotalPrice() {
+        return totalPrice;
+    }
+
+    public void setTotalPrice(Double totalPrice) {
+        this.totalPrice = totalPrice;
+    }
+
+    public Date getTradeTime() {
+        return tradeTime;
+    }
+
+    public void setTradeTime(Date tradeTime) {
+        this.tradeTime = tradeTime;
+    }
+
+    public Integer getTradeStatus() {
+        return tradeStatus;
+    }
+
+    public void setTradeStatus(Integer tradeStatus) {
+        this.tradeStatus = tradeStatus;
+    }
+
+    public String getPayType() {
+        return payType;
+    }
+
+    public void setPayType(String payType) {
+        this.payType = payType;
+    }
+
+    public String getSettleTime() {
+        return settleTime;
+    }
+
+    public void setSettleTime(String settleTime) {
+        this.settleTime = settleTime;
+    }
+
+    public Double getRealPrice() {
+        return realPrice;
+    }
+
+    public void setRealPrice(Double realPrice) {
+        this.realPrice = realPrice;
+    }
+
+    public Double getShouldPrice() {
+        return shouldPrice;
+    }
+
+    public void setShouldPrice(Double shouldPrice) {
+        this.shouldPrice = shouldPrice;
+    }
+
+    public Long getSettleUserId() {
+        return settleUserId;
+    }
+
+    public void setSettleUserId(Long settleUserId) {
+        this.settleUserId = settleUserId;
+    }
+
+    public Long getRecordUserId() {
+        return recordUserId;
+    }
+
+    public void setRecordUserId(Long recordUserId) {
+        this.recordUserId = recordUserId;
+    }
+
+    public String getRecordTime() {
+        return recordTime;
+    }
+
+    public void setRecordTime(String recordTime) {
+        this.recordTime = recordTime;
+    }
+
+    public String getRecord() {
+        return record;
+    }
+
+    public void setRecord(String record) {
+        this.record = record;
+    }
+
+    public String getRefundReason() {
+        return refundReason;
+    }
+
+    public void setRefundReason(String refundReason) {
+        this.refundReason = refundReason;
+    }
+
+    public String getRefundTime() {
+        return refundTime;
+    }
+
+    public void setRefundTime(String refundTime) {
+        this.refundTime = refundTime;
+    }
+
+    public String getReceiveName() {
+        return receiveName;
+    }
+
+    public void setReceiveName(String receiveName) {
+        this.receiveName = receiveName;
+    }
+
+    public String getReceivePhone() {
+        return receivePhone;
+    }
+
+    public void setReceivePhone(String receivePhone) {
+        this.receivePhone = receivePhone;
+    }
+
+    public String getReceiveAddress() {
+        return receiveAddress;
+    }
+
+    public void setReceiveAddress(String receiveAddress) {
+        this.receiveAddress = receiveAddress;
+    }
+
+    public String getOutTime() {
+        return outTime;
+    }
+
+    public void setOutTime(String outTime) {
+        this.outTime = outTime;
+    }
+
+    public String getGoodsNames() {
+        return goodsNames;
+    }
+
+    public void setGoodsNames(String goodsNames) {
+        this.goodsNames = goodsNames;
+    }
+
+    public Integer getApply() {
+        return apply;
+    }
+
+    public void setApply(Integer apply) {
+        this.apply = apply;
+    }
+
+    public String getApplyTime() {
+        return applyTime;
+    }
+
+    public void setApplyTime(String applyTime) {
+        this.applyTime = applyTime;
+    }
+
+    public String getApplyResult() {
+        return applyResult;
+    }
+
+    public void setApplyResult(String applyResult) {
+        this.applyResult = applyResult;
+    }
+
+    public String getApplyFailReason() {
+        return applyFailReason;
+    }
+
+    public void setApplyFailReason(String applyFailReason) {
+        this.applyFailReason = applyFailReason;
+    }
+
+    public String getDistribution() {
+        return distribution;
+    }
+
+    public void setDistribution(String distribution) {
+        this.distribution = distribution;
+    }
+
+    public Integer getPeopleConfirm() {
+        return peopleConfirm;
+    }
+
+    public void setPeopleConfirm(Integer peopleConfirm) {
+        this.peopleConfirm = peopleConfirm;
+    }
+
+    public Integer getEnterpriseConfirm() {
+        return enterpriseConfirm;
+    }
+
+    public void setEnterpriseConfirm(Integer enterpriseConfirm) {
+        this.enterpriseConfirm = enterpriseConfirm;
+    }
+
+    public String getPick() {
+        return pick;
+    }
+
+    public void setPick(String pick) {
+        this.pick = pick;
+    }
+
+    public Date getPickTime() {
+        return pickTime;
+    }
+
+    public void setPickTime(Date pickTime) {
+        this.pickTime = pickTime;
+    }
+
+    public Long getShopId() {
+        return shopId;
+    }
+
+    public void setShopId(Long shopId) {
+        this.shopId = shopId;
+    }
+
+    public String getShopName() {
+        return shopName;
+    }
+
+    public void setShopName(String shopName) {
+        this.shopName = shopName;
+    }
+
+    public Integer getSend() {
+        return send;
+    }
+
+    public void setSend(Integer send) {
+        this.send = send;
+    }
+
+    public String getSendTime() {
+        return sendTime;
+    }
+
+    public void setSendTime(String sendTime) {
+        this.sendTime = sendTime;
+    }
+
+    public Long getLevelTwoOrderId() {
+        return levelTwoOrderId;
+    }
+
+    public void setLevelTwoOrderId(Long levelTwoOrderId) {
+        this.levelTwoOrderId = levelTwoOrderId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(Long createBy) {
+        this.createBy = createBy;
+    }
+
+    public String getCreateName() {
+        return createName;
+    }
+
+    public void setCreateName(String createName) {
+        this.createName = createName;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Long getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(Long 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 Integer getFinishStatus() {
+        return finishStatus;
+    }
+
+    public void setFinishStatus(Integer finishStatus) {
+        this.finishStatus = finishStatus;
+    }
+
+    public Integer getResaleStatus() {
+        return resaleStatus;
+    }
+
+    public void setResaleStatus(Integer resaleStatus) {
+        this.resaleStatus = resaleStatus;
+    }
+}

+ 65 - 0
sp-core/sp-api/src/main/java/com/pj/api/dto/PeopleDto.java

@@ -149,6 +149,71 @@ public class PeopleDto {
      */
     private String personId;
 
+    public PeopleDto(String name, String code, Integer sex, Integer age, String idCard, String idCardImg, String phone, String bankNo, String bankCode, String bankName, Long groupId, String groupName, Integer status, Integer role, Double lng, Double lat, String lastLocation, String address, String addressIds, String detailAddress, Integer isLock, Double leftPrice, Integer judgeStatus, String judgeContent, Date registerTime, Date judgeTime, String personId, Long tradeAreaId, String tradeAreaName, Date createTime, String createBy, String createName, Date updateTime, String updateBy, String updateName, Integer deleteStatus) {
+        this.name = name;
+        this.code = code;
+        this.sex = sex;
+        this.age = age;
+        this.idCard = idCard;
+        this.idCardImg = idCardImg;
+        this.phone = phone;
+        this.bankNo = bankNo;
+        this.bankCode = bankCode;
+        this.bankName = bankName;
+        this.groupId = groupId;
+        this.groupName = groupName;
+        this.status = status;
+        this.role = role;
+        this.lng = lng;
+        this.lat = lat;
+        this.lastLocation = lastLocation;
+        this.address = address;
+        this.addressIds = addressIds;
+        this.detailAddress = detailAddress;
+        this.isLock = isLock;
+        this.leftPrice = leftPrice;
+        this.judgeStatus = judgeStatus;
+        this.judgeContent = judgeContent;
+        this.registerTime = registerTime;
+        this.judgeTime = judgeTime;
+        this.personId = personId;
+        this.tradeAreaId = tradeAreaId;
+        this.tradeAreaName = tradeAreaName;
+        this.createTime = createTime;
+        this.createBy = createBy;
+        this.createName = createName;
+        this.updateTime = updateTime;
+        this.updateBy = updateBy;
+        this.updateName = updateName;
+        this.deleteStatus = deleteStatus;
+    }
+
+    public Long getTradeAreaId() {
+        return tradeAreaId;
+    }
+
+    public void setTradeAreaId(Long tradeAreaId) {
+        this.tradeAreaId = tradeAreaId;
+    }
+
+    public String getTradeAreaName() {
+        return tradeAreaName;
+    }
+
+    public void setTradeAreaName(String tradeAreaName) {
+        this.tradeAreaName = tradeAreaName;
+    }
+
+    /**
+     * 互市区域ID
+     */
+    private Long tradeAreaId;
+
+    /**
+     * 互市区名称
+     */
+    private String tradeAreaName;
+
     /**
      * 创建时间
      */

+ 1 - 1
sp-core/sp-base/src/main/java/com/pj/aliyun/sms/AliyunInformSmsService.java

@@ -24,7 +24,7 @@ public class AliyunInformSmsService {
 
 
     // 签名
-    private static final String signName = "某某公司";
+    private static final String signName = "边民互市";
 
     // 模板
     private static final String templateCode = "SMS_22*****04";

+ 3 - 0
sp-core/sp-base/src/main/java/com/pj/current/dto/APPLoginUserInfo.java

@@ -13,4 +13,7 @@ public class APPLoginUserInfo implements Serializable {
     private String loginName;
     private Long fk;
     private Integer userType;
+    private Long groupId;
+    private String groupName;
+    private Long tradeAreaId;
 }

+ 23 - 0
sp-core/sp-base/src/main/java/com/pj/enummj/ApplyStatus.java

@@ -0,0 +1,23 @@
+package com.pj.enummj;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Author Mechrevo
+ * @Date 2023 08 07 10 55
+ **/
+@Getter
+@AllArgsConstructor
+public enum ApplyStatus {
+
+    //申报[0=待申报,1=申报通过,2=申报不通过]
+
+    APPLY_STATUS_ZERO(0,"待申报"),
+    APPLY_STATUS_ONE(1,"申报通过"),
+    APPLY_STATUS_TWO(2,"申报不通过");
+
+    private Integer code;
+
+    private String msg;
+}

+ 1 - 1
sp-core/sp-base/src/main/java/com/pj/enummj/GoodsStatus.java

@@ -15,7 +15,7 @@ public enum GoodsStatus {
      * 商品goodsTransit
      */
     GOODS_STATUS_ON(1,"在售"),
-    GOODS_STATUS_OFF(2,"下架");
+    GOODS_STATUS_OFF(0,"下架");
 
     private Integer code;
 

+ 4 - 1
sp-core/sp-base/src/main/java/com/pj/utils/sg/AjaxJson.java

@@ -207,7 +207,10 @@ public class AjaxJson extends LinkedHashMap<String, Object> implements Serializa
 	public static AjaxJson getByBoolean(boolean b){
 		return b ? getSuccess("ok") : getError("error"); 
 	}
-	
+
+	public static AjaxJson toAjax(boolean result) {
+		return result ? getSuccess() : getError();
+	}
 	
 	// 重写toString,转json格式输出 
 	@Override

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

@@ -1,5 +1,6 @@
 package com.pj.tb_enterprise;
 
+import com.pj.api.dto.EnterpriseDto;
 import com.pj.tb_enterprise.param.EnterpriseParam;
 import com.pj.tb_enterprise.vo.OrdersVo;
 import com.pj.utils.sg.AjaxJson;
@@ -56,4 +57,14 @@ public class TbEnterpriseAppController {
 		return AjaxJson.getSuccessData(ordersVos);
 	}
 
+	/*------            正常业务👆👆    rpc远程调用👇👇                         -----------*/
+
+
+	/** 根据ID获取一级市场商户信息 */
+	@RequestMapping("rpc/getEnterpriseById")
+	public EnterpriseDto getEnterpriseById(@RequestParam("enterpriseId")Long enterpriseId){
+		EnterpriseDto enterpriseById = tbEnterpriseService.getEnterpriseById(enterpriseId);
+		return enterpriseById;
+	}
+
 }

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

@@ -381,4 +381,13 @@ public class TbEnterpriseService extends ServiceImpl<TbEnterpriseMapper, TbEnter
         });
         this.updateBatchById(list);
     }
+
+	/** 远程调用:根据ID获取一级市场商户 */
+	EnterpriseDto getEnterpriseById(Long id) {
+		TbEnterprise enterprise = super.getById(id);
+		EnterpriseDto enterpriseDto = new EnterpriseDto();
+		BeanUtils.copyProperties(enterprise,enterpriseDto);
+		return enterpriseDto;
+	}
+
 }

+ 53 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_goods/AppTbGoodsController.java

@@ -0,0 +1,53 @@
+package com.pj.tb_goods;
+
+import com.pj.project4sp.SP;
+import com.pj.utils.sg.AjaxJson;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+/**
+ *app端:商品管理
+ * @author yzs
+ */
+@RestController
+@RequestMapping("/app/TbGoods/")
+public class AppTbGoodsController {
+
+	/** 底层 Service 对象 */
+	@Autowired
+	TbGoodsService tbGoodsService;
+
+	/** 增添加商品 */
+	@RequestMapping("add")
+//	@SaCheckPermission(TbGoods.PERMISSION_CODE_ADD)
+	public AjaxJson add(TbGoods t){
+		tbGoodsService.add(t);
+		t = tbGoodsService.getById(SP.publicMapper.getPrimarykey());
+		return AjaxJson.getSuccessData(t);
+	}
+
+
+	/** 查 - 根据id */  
+	@RequestMapping("getById")
+//		@SaCheckPermission(TbGoods.PERMISSION_CODE)
+	public AjaxJson getById(String id){
+		TbGoods t = tbGoodsService.getById(id);
+		return AjaxJson.getSuccessData(t);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
+	@RequestMapping("getList")
+//		@SaCheckPermission(TbGoods.PERMISSION_CODE)
+	public AjaxJson getList() { 
+		SoMap so = SoMap.getRequestSoMap();
+		List<TbGoods> list = tbGoodsService.getList(so.startPage());
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
+
+
+}

+ 1 - 1
sp-service/level-one-server/src/main/java/com/pj/tb_goods/TbGoodsMapper.xml

@@ -23,7 +23,7 @@
 		<include refid="select_sql"></include>
 		<where>
 			<if test=' this.has("id") '> and id = #{id} </if>
-			<if test=' this.has("name") '> and name = #{name} </if>
+			<if test=' this.has("name") '> and name like concat('%', #{name}, '%')</if>
 			<if test=' this.has("typeIds") '> and type_ids = #{typeIds} </if>
 			<if test=' this.has("typeNames") '> and type_names = #{typeNames} </if>
 			<if test=' this.has("code") '> and code = #{code} </if>

+ 2 - 1
sp-service/level-one-server/src/main/java/com/pj/tb_goods/TbGoodsService.java

@@ -53,9 +53,10 @@ public class TbGoodsService extends ServiceImpl<TbGoodsMapper, TbGoods> implemen
 	/** 改 */
 	void update(TbGoods t){
 		updateById(t);
-
 	}
 
+
+
 	/** 查 */
 	TbGoods getById(String id){
 		return super.getById(id);

+ 8 - 6
sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/MethodGoodsCartService.java

@@ -42,11 +42,11 @@ public class MethodGoodsCartService {
         List<GoodsCartVo> resultList = new ArrayList<>();
         //遍历封装
         cartList.forEach(item -> {
-            //获取店铺
-            TbShop tbShop = tbShopMapper.selectById(item.getShopId());
-            if(tbShop == null)throw new ServiceException("店铺信息有误~");
-            //店铺名称
-            String shopName = tbShop.getName();
+            //获取店铺 todo:届时放开店铺信息
+//            TbShop tbShop = tbShopMapper.selectById(item.getShopId());
+//            if(tbShop == null)throw new ServiceException("店铺信息有误~");
+//            //店铺名称
+//            String shopName = tbShop.getName();
             //设置重量
             Long goodsTransitId = item.getPublishGoodsId();
             TbGoodsTransit tbGoodsTransit = tbGoodsTransitMapper.selectById(goodsTransitId);
@@ -56,10 +56,12 @@ public class MethodGoodsCartService {
             String goodsUnits = tbGoodsTransit.getGoodsUnits();
             //创建对象
             GoodsCartVo goodsCartVo = new GoodsCartVo();
+            //关联的商品是否已被下单
+            goodsCartVo.setGoodsIsorderStatus(item.getGoodsIsorderStatus());
             //数据拷贝
             BeanUtils.copyProperties(item,goodsCartVo);
             //设置店铺名称
-            goodsCartVo.setShopName(shopName);
+            goodsCartVo.setShopName("shopName");
             //设置净重
             goodsCartVo.setNetWeight(netWeight + goodsUnits);
             //设置毛重

+ 1 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/TbGoodsCart.java

@@ -68,6 +68,7 @@ public class TbGoodsCart extends Model<TbGoodsCart> implements Serializable {
 	private String goodsName;
 
 	private Integer buyNum;
+	private Integer goodsIsorderStatus;
 
 	/**
 	 *  

+ 48 - 18
sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/TbGoodsCartApiController.java

@@ -1,41 +1,71 @@
 package com.pj.tb_goods_cart;
 
 import com.pj.tb_goods_cart.dto.GoodsCartInfoDto;
+import com.pj.tb_goods_cart.vo.GoodsCartVo;
 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.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
 import java.util.List;
 
 
 /**
  * Controller: tb_goods_cart -- 购物车
- * @author qzy 
+ *
+ * @author qzy
  */
 @RestController
 @RequestMapping("/app/TbGoodsCart/")
 public class TbGoodsCartApiController {
 
-	/** 底层 Service 对象 */
-	@Autowired
-	TbGoodsCartService tbGoodsCartService;
-
-	/** 添加购物车 */
-	@RequestMapping("addGoodsInShopCart")
-	public AjaxJson addGoodsInShopCart(@Validated @RequestBody GoodsCartInfoDto goodsCartInfoDto){
-		AjaxJson ajaxJson = tbGoodsCartService.addGoodsInShopCart(goodsCartInfoDto);
-		return ajaxJson;
-	}
-
-	/** 清理购物车,可批量 */
-	@RequestMapping("cleanCart")
-	public AjaxJson cleanCart(@RequestBody List<Long> ids){
-		AjaxJson ajaxJson = AjaxJson.getSuccessData(tbGoodsCartService.cleanCart(ids));
-		return ajaxJson;
-	}
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    TbGoodsCartService tbGoodsCartService;
+
+
+    /**
+     * 查 - 根据id
+     */
+    @RequestMapping("getById")
+//		@SaCheckPermission(TbGoodsCart.PERMISSION_CODE)
+    public AjaxJson getById(String id) {
+        TbGoodsCart t = tbGoodsCartService.getById(id);
+        return AjaxJson.getSuccessData(t);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    @RequestMapping("getList")
+    public AjaxJson getList() {
+        SoMap so = SoMap.getRequestSoMap();
+        return AjaxJson.getSuccessData(tbGoodsCartService.getList(so));
+    }
+
+    /**
+     * 添加购物车
+     */
+    @RequestMapping("addGoodsInShopCart")
+    public AjaxJson addGoodsInShopCart(@Validated @RequestBody GoodsCartInfoDto goodsCartInfoDto) {
+        AjaxJson ajaxJson = tbGoodsCartService.addGoodsInShopCart(goodsCartInfoDto);
+        return ajaxJson;
+    }
+
+    /**
+     * 清理购物车,可批量
+     */
+    @RequestMapping("cleanCart/{ids}")
+    public AjaxJson cleanCart(@PathVariable Long[] ids) {
+        return AjaxJson.getSuccessData(tbGoodsCartService.removeByIds(Arrays.asList(ids)));
+    }
 
 
 }

+ 1 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/TbGoodsCartMapper.xml

@@ -24,6 +24,7 @@
 		<where>
 			<if test=' this.has("id") '> and id = #{id} </if>
 			<if test=' this.has("enterpriseId") '> and enterprise_id = #{enterpriseId} </if>
+			<if test=' this.has("goodsIsorderStatus") '> and goods_isorder_status = #{goodsIsorderStatus} </if>
 			<if test=' this.has("shopId") '> and shop_id = #{shopId} </if>
 			<if test=' this.has("tradeAreaId") '> and trade_area_id = #{tradeAreaId} </if>
 			<if test=' this.has("goodsName") '> and goods_name = #{goodsName} </if>

+ 10 - 5
sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/TbGoodsCartService.java

@@ -9,6 +9,7 @@ import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.enummj.DeleteStatus;
 import com.pj.enummj.IsLock;
+import com.pj.enummj.People;
 import com.pj.enummj.UserType;
 import com.pj.tb_goods_cart.dto.GoodsCartInfoDto;
 import com.pj.tb_goods_cart.vo.GoodsCartVo;
@@ -86,7 +87,12 @@ public class TbGoodsCartService extends ServiceImpl<TbGoodsCartMapper, TbGoodsCa
 		APPLoginUserInfo appUser = StpAPPUserUtil.getAPPLoginInfo();
 		if(appUser == null || appUser.getLoginId() == null)return AjaxJson.getError("购买者账号异常");
 		//判断当前用户是否为一级市场边民组长
-		int leader = tbPeopleMapper.selectList(new LambdaQueryWrapper<TbPeople>().eq(TbPeople::getId, appUser.getFk()).eq(TbPeople::getIsLock, IsLock.IS_LOCK_ON.getCode()).eq(TbPeople::getDeleteStatus, DeleteStatus.DELETE_STATUS_ON.getCode())).size();
+		int leader = tbPeopleMapper.selectList(new LambdaQueryWrapper<TbPeople>()
+						.eq(TbPeople::getId, appUser.getFk())
+						.eq(TbPeople::getRole, 2)
+						.eq(TbPeople::getIsLock, IsLock.IS_LOCK_ON.getCode())
+						.eq(TbPeople::getDeleteStatus, DeleteStatus.DELETE_STATUS_ON.getCode()))
+						.size();
 		if(leader == 0)throw new ServiceException("您当前的身份不是互市组组长,无法添加购物车!");
 		//购物车查重
 		int size = tbGoodsCartMapper.selectList(new LambdaQueryWrapper<TbGoodsCart>()
@@ -131,10 +137,6 @@ public class TbGoodsCartService extends ServiceImpl<TbGoodsCartMapper, TbGoodsCa
 	/** 删除购物车,可批量 */
 	public int cleanCart(List<Long> ids){
 		if(ids.size() == 0)return 0;
-		//检查登录
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
-			throw new ServiceException("当前登录账号信息已失效!");
 		//清理购物车
 		int batchIds = tbGoodsCartMapper.deleteBatchIds(ids);
 		System.out.println("已清空 " + batchIds + " 个商品!");
@@ -144,6 +146,9 @@ public class TbGoodsCartService extends ServiceImpl<TbGoodsCartMapper, TbGoodsCa
 	/**
 	 * todo:采购支付,暂时预留
 	 */
+	
+
+
 
 
 }

+ 4 - 3
sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/dto/GoodsCartInfoDto.java

@@ -25,16 +25,17 @@ public class GoodsCartInfoDto {
     @NotNull(message = "商家ID必填")
     private Long enterpriseId;
     /** 店铺ID */
-    @NotNull(message = "店铺ID必填")
+    //todo: 届时打开商铺ID必填
+//    @NotNull(message = "店铺ID必填")
     private Long shopId;
     /** 购买地点ID */
     @NotNull(message = "区域ID必填")
     private Long tradeAreaId;
     /** goodsTransit商品ID */
-    @NotNull(message = "商品ID必填")
+    @NotNull(message = "goodstransitID必填")
     private Long publishGoodsId;
     /** 商品图片 */
-    @NotNull(message = "商品ID必填")
+    @NotNull(message = "商品图片")
     private String goodsImg;
     /** 商品名称 */
     @NotNull(message = "商品名称必填")

+ 1 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_goods_cart/vo/GoodsCartVo.java

@@ -56,6 +56,7 @@ public class GoodsCartVo {
     private String goodsName;
 
     private Integer buyNum;
+    private Integer goodsIsorderStatus;
 
     /**
      *

+ 67 - 37
sp-service/level-one-server/src/main/java/com/pj/tb_goods_transit/GoodsTransitAppController.java

@@ -1,24 +1,21 @@
 package com.pj.tb_goods_transit;
 
 
-import com.pj.current.dto.APPLoginUserInfo;
-import com.pj.current.satoken.StpAPPUserUtil;
-import com.pj.enummj.DeleteStatus;
+import com.pj.api.dto.GoodsTransitDto;
+
 import com.pj.tb_goods_transit.param.PurchaseLevelOneGoodsTransitParam;
 import com.pj.tb_goods_transit.param.TransactionGoodsParam;
 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.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
 /**
  * app端用户添加/上架/下架商品
+ *
  * @Author Mechrevo
  * @Date 2023 07 27 09 31
  **/
@@ -29,63 +26,88 @@ public class GoodsTransitAppController {
     @Autowired
     private TbGoodsTransitService tbGoodsTransitService;
 
-    /** 查 - 根据id */
+
+    /**
+     * 查 - 根据id
+     */
     @RequestMapping("getById")
 //		@SaCheckPermission(TbGoodsTransit.PERMISSION_CODE)
-    public AjaxJson getById(Long id){
+    public AjaxJson getById(Long id) {
         TbGoodsTransit t = tbGoodsTransitService.getById(id);
         return AjaxJson.getSuccessData(t);
     }
 
-    /** 查集合 - 根据APP用户ID查发布的商品(参数为空时代表忽略指定条件) */
+    /**
+     * 查集合 - 根据自己的互市区ID查询对应互市区的商品
+     */
     @RequestMapping("getTransitList")
-//		@SaCheckPermission(TbGoodsTransit.PERMISSION_CODE)
     public AjaxJson getTransitList() {
-        //获取app登录用户
-        APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-        if(appLoginInfo == null)throw new RuntimeException("当前登陆用户信息已失效!");
+        SoMap so = SoMap.getRequestSoMap();
+        List<TbGoodsTransit> list = tbGoodsTransitService.getAppList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
 
+    /**
+     * 一级市场
+     */
+    @RequestMapping("getList")
+    public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
-        so.put("merchantId",appLoginInfo.getFk());
-        so.put("deleteStatus" , DeleteStatus.DELETE_STATUS_ON.getCode());
+        so.put("goodsStatus", 1);
+        so.put("isOrders", 0);
         List<TbGoodsTransit> list = tbGoodsTransitService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);
     }
 
-    /** 删 */
+    /**
+     * 删
+     */
     @RequestMapping("deleteById")
 //	@SaCheckPermission(TbGoodsTransit.PERMISSION_CODE_DEL)
-    public AjaxJson deleteById(Long id){
+    public AjaxJson deleteById(Long id) {
         tbGoodsTransitService.delete(id);
         return AjaxJson.getSuccess();
     }
 
-    /** 改 */
+    /**
+     * 改
+     */
     @RequestMapping("update")
-//	@SaCheckPermission(TbGoodsTransit.PERMISSION_CODE_EDIT)
-    public AjaxJson update(TbGoodsTransit t){
+    public AjaxJson update(TbGoodsTransit t) {
         tbGoodsTransitService.update(t);
         return AjaxJson.getSuccess();
     }
 
-    /** app端用户添加商品 */
-    @RequestMapping("transactionGoods")
-//    @SaCheckPermission(TbGoodsTransit.PERMISSION_CODE_ADD)
-    public AjaxJson transactionGoods(TransactionGoodsParam t){
-        boolean goods = tbGoodsTransitService.transactionGoods(t);
-        if(goods) return AjaxJson.getSuccess("商品添加成功!");
-        return AjaxJson.getError("商品添加失败!");
+    /**
+     * 改    商铺确认情况[0=待确认,1=已确认,2=拒绝]
+     */
+    @PostMapping("updateEnterpriseConfirm")
+    public AjaxJson updateEnterpriseConfirm(Long id, Integer enterpriseConfirm) {
+        TbGoodsTransit tbGoodsTransit = new TbGoodsTransit();
+        tbGoodsTransit.setId(id);
+        tbGoodsTransit.setEnterpriseConfirm(enterpriseConfirm);
+
+        return AjaxJson.toAjax(tbGoodsTransitService.updateEnterpriseConfirm(tbGoodsTransit));
     }
 
-    /** app端用户上架/下架商品 */
+    /**
+     * app端用户添加商品
+     */
+    @RequestMapping("add")
+    public AjaxJson add(TransactionGoodsParam t) {
+        return AjaxJson.toAjax(tbGoodsTransitService.transactionGoods(t));
+    }
+
+    /**
+     * app端用户上架/下架商品
+     */
     @RequestMapping("UpOrDownGoods")
 //    @SaCheckPermission(TbGoodsTransit.PERMISSION_CODE_ADD)
-    public AjaxJson UpOrDownGoods(@RequestParam("goodsTransitId")Long goodsTransitId,
-                                  @RequestParam("goodsStatus")Integer goodsStatus){
-        boolean goods = tbGoodsTransitService.UpOrDownGoods(goodsTransitId,goodsStatus);
-        if(goods){
-            if(!goodsStatus.toString().trim().equals("")){
-                if(goodsStatus == 1){
+    public AjaxJson UpOrDownGoods(@RequestParam("goodsTransitId") Long goodsTransitId, @RequestParam("goodsStatus") Integer goodsStatus) {
+        boolean goods = tbGoodsTransitService.UpOrDownGoods(goodsTransitId, goodsStatus);
+        if (goods) {
+            if (!goodsStatus.toString().trim().equals("")) {
+                if (goodsStatus == 1) {
                     return AjaxJson.getSuccess("商品上架成功!");
                 }
                 return AjaxJson.getSuccess("商品下架成功!");
@@ -95,7 +117,6 @@ public class GoodsTransitAppController {
     }
 
 
-
     /**
      * 采购一级市场的商品,
      * 包括加入购物车、购买、支付(暂时不做),
@@ -106,12 +127,21 @@ public class GoodsTransitAppController {
 //    @SaCheckPermission(TbGoodsTransit.PERMISSION_CODE_ADD)
     public AjaxJson purchaseLevelOntGoodsTransit(@Validated @RequestBody PurchaseLevelOneGoodsTransitParam purchaseLevelOneGoodsTransitParam) throws Exception {
         boolean goods = tbGoodsTransitService.purchaseLevelOntGoodsTransit(purchaseLevelOneGoodsTransitParam);
-        if(goods){
+        if (goods) {
             return AjaxJson.getSuccess("提交成功,待商家确认订单!");
         }
         return AjaxJson.getError("提交失败!");
     }
 
+    /*-----       远程调用👇👇  正常业务方法👆👆    -----*/
 
+    /**
+     * 根据商户ID和过审商品表ID查询过审商品
+     */
+    @RequestMapping("rpc/getGoodsTransitById")
+    public GoodsTransitDto getGoodsTransitById(@RequestParam("goodsTransitId") Long goodsTransitId,@RequestParam("enterpriseId") Long enterpriseId) {
+        GoodsTransitDto t = tbGoodsTransitService.getGoodsTransitById(goodsTransitId,enterpriseId);
+        return t;
+    }
 
 }

+ 18 - 1
sp-service/level-one-server/src/main/java/com/pj/tb_goods_transit/MethodGoodsTransitService.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.enummj.*;
 import com.pj.retry.SmsRetryService;
+import com.pj.tb_goods_cart.TbGoodsCart;
+import com.pj.tb_goods_cart.TbGoodsCartService;
 import com.pj.tb_order.TbOrder;
 import com.pj.tb_order.TbOrderMapper;
 import com.pj.tb_people.TbPeople;
@@ -41,6 +43,8 @@ public class MethodGoodsTransitService {
     private TbOrderMapper tbOrderMapper;
     @Autowired
     private TbPeopleMapper tbPeopleMapper;
+    @Autowired
+    private TbGoodsCartService tbGoodsCartService;
 
 
 
@@ -116,6 +120,7 @@ public class MethodGoodsTransitService {
         tbOrder.setEnterpriseName(tbGoodsTransit.getMerchantName());
         tbOrder.setTotalWeight(tbGoodsTransit.getGrossWeight());
         tbOrder.setTotalPrice(tbGoodsTransit.getPrice());
+        tbOrder.setCancelPeople(0); // 0=订单未取消,默认状态
 //		tbOrder.setTradeTime();  // 交易时间
 //		tbOrder.setPayType();  //交易类型
 //		tbOrder.setRealPrice();  // 当前结算金额
@@ -131,7 +136,7 @@ public class MethodGoodsTransitService {
         tbOrder.setEnterpriseConfirm(EnterpriseConfirm.ENTERPRISE_CONFIRM_ZERO.getCode()); // 0为待商家确认
         tbOrder.setPeopleConfirm(EnterpriseConfirm.ENTERPRISE_CONFIRM_ZERO.getCode()); // 0为待边民确认
         tbOrder.setSend(DeliverStatus.DELIVER_STATUS_ZERO.getCode());  // 0为未发货 1为已发货
-        tbOrder.setTradeStatus(TradeStatus.TRADE_STATUS_ZERO.getCode().toString()); //支付状态默认是0,未支付
+        tbOrder.setTradeStatus(TradeStatus.TRADE_STATUS_ZERO.getCode()); //支付状态默认是0,未支付
         tbOrder.setResaleStatus(ResaleStatus.RESALE_STATUS_ZERO.getCode()); // 是否转售状态,默认未转售 0
         tbOrder.setFinishStatus(OrderStatus.ORDER_STATUS_ZERO.getCode());  // 订单完成状态,默认未完成 0
         //订单表基本字段
@@ -145,6 +150,18 @@ public class MethodGoodsTransitService {
         return tbOrder;
     }
 
+    /**
+     * 如果购物车内的商品为已下单,则将所有人添加该商品到购物车的状态全部改成已下单
+     * @param tbGoodsCarts
+     */
+    public void goodsCartIsOrder(List<TbGoodsCart> tbGoodsCarts){
+        if(tbGoodsCarts.size() == 0)return;
+        //将购物的的商品订单状态改成已下单
+        tbGoodsCarts.forEach(item -> {
+            item.setGoodsIsorderStatus(1);
+        });
+        tbGoodsCartService.saveBatch(tbGoodsCarts);
+    }
 
 
 

+ 68 - 10
sp-service/level-one-server/src/main/java/com/pj/tb_goods_transit/TbGoodsTransitService.java

@@ -8,9 +8,10 @@ import java.util.Date;
 import java.util.List;
 
 import cn.dev33.satoken.stp.StpUtil;
-import com.alibaba.druid.support.json.JSONUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.pj.aliyun.sms.AliyunSmsService;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.pj.api.dto.GoodsTransitDto;
+import com.pj.common.core.exception.ServiceException;
 import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.enummj.*;
@@ -19,13 +20,14 @@ import com.pj.tb_enterprise.TbEnterprise;
 import com.pj.tb_enterprise.TbEnterpriseMapper;
 import com.pj.tb_goods.TbGoods;
 import com.pj.tb_goods.TbGoodsMapper;
+import com.pj.tb_goods_cart.TbGoodsCart;
+import com.pj.tb_goods_cart.TbGoodsCartMapper;
 import com.pj.tb_goods_transit.param.JudgeTransitParam;
 import com.pj.tb_goods_transit.param.PurchaseLevelOneGoodsTransitParam;
 import com.pj.tb_goods_transit.param.TransactionGoodsParam;
-import com.pj.tb_group.TbGroup;
-import com.pj.tb_group.TbGroupMapper;
 import com.pj.tb_order.TbOrder;
 import com.pj.tb_order.TbOrderMapper;
+import com.pj.tb_order.TbOrderService;
 import com.pj.tb_people.TbPeople;
 import com.pj.tb_people.TbPeopleMapper;
 import com.pj.tb_trade_area.TbTradeArea;
@@ -76,6 +78,11 @@ public class TbGoodsTransitService extends ServiceImpl<TbGoodsTransitMapper, TbG
 
 	@Autowired
 	private TbEnterpriseMapper tbEnterpriseMapper;
+	@Autowired
+	private TbGoodsCartMapper tbGoodsCartMapper;
+
+	@Autowired
+	TbOrderService orderService;
 
 	/** 增 */
 	void add(TbGoodsTransit t){
@@ -112,11 +119,25 @@ public class TbGoodsTransitService extends ServiceImpl<TbGoodsTransitMapper, TbG
 		return tbGoodsTransitMapper.getList(so);
 	}
 
+	/** 查集合 - 根据自己的互市区ID查询对应互市区的商品 */
+	List<TbGoodsTransit> getAppList(SoMap so) {
+		//获取app登录用户
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if (appLoginInfo == null) throw new RuntimeException("当前登陆用户信息已失效!");
+		//添加互市区条件
+		so.put("tradeAreaId",appLoginInfo.getTradeAreaId()); // 根据边民的所在互市区匹配其能查看的商品
+		so.put("merchantId", appLoginInfo.getFk()); // 外键
+		so.put("isOrders",0); // 未被下单
+		so.set("auditStatus",AuditStatus.AUDIT_STATUS_ON.getCode()); // 审核通过
+		so.put("deleteStatus", DeleteStatus.DELETE_STATUS_ON.getCode()); // 未被逻辑删除
+		return tbGoodsTransitMapper.getList(so);
+	}
+
 	/** 查看一级市场在销/上架商品 */
 	List<TbGoodsTransit> getTransitList(SoMap so,String goodsType){
 		//设置可展示的状态
 		if(goodsType != null){
-			so.set("goodsType", goodsType);
+			so.put("goodsType", goodsType);
 		}
 		//获取在销商品列表,根据日期进行降序排序
 		List<TbGoodsTransit> goodsTransitList = tbGoodsTransitMapper.getList(so);
@@ -186,6 +207,8 @@ public class TbGoodsTransitService extends ServiceImpl<TbGoodsTransitMapper, TbG
 		tbGoodsTransit.setPlaceOrigin(tbGoods.getSource());
 		tbGoodsTransit.setGoodsUnits(tbGoods.getUnit());
 		tbGoodsTransit.setGoodsType(tbGoods.getTypeNames());
+		tbGoodsTransit.setGoodsImg(tbGoods.getAvatar());
+		tbGoodsTransit.setGoodsId(tbGoods.getId());//保存监管商品表id
 		tbGoodsTransit.setShopId(transactionGoodsParam.getShopId());
 		tbGoodsTransit.setShopName(transactionGoodsParam.getShopName());
 
@@ -198,14 +221,13 @@ public class TbGoodsTransitService extends ServiceImpl<TbGoodsTransitMapper, TbG
 		tbGoodsTransit.setDeclareOdd(String.valueOf(tbGoods.getId()));
 		//设置默认信息
 		tbGoodsTransit.setAuditStatus(AuditStatus.AUDIT_STATUS_ON.getCode());//默认已过审
-		tbGoodsTransit.setGoodsStatus(GoodsStatus.GOODS_STATUS_ON.getCode());//默认已上架
 		tbGoodsTransit.setIsOrders(0);//默认未被下单
 		tbGoodsTransit.setEnterpriseConfirm(EnterpriseConfirm.ENTERPRISE_CONFIRM_ZERO.getCode());//商铺确认情况[0=待确认,1=已确认,2=拒绝]
 		//设置基本信息
 		tbGoodsTransit.setCreateTime(new Date());
 		tbGoodsTransit.setCreateBy(appLoginInfo.getLoginId() + "");
 		tbGoodsTransit.setCreateName(appLoginInfo.getLoginName());
-		tbGoodsTransit.setDeleteStatus(1);
+		tbGoodsTransit.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode());
 		//执行保存
 		int insert = tbGoodsTransitMapper.insert(tbGoodsTransit);
 		return insert == 1;
@@ -266,9 +288,14 @@ public class TbGoodsTransitService extends ServiceImpl<TbGoodsTransitMapper, TbG
 		if(tbGoods == null)throw new RuntimeException("当前商品海关已不允许销售!");
 		//执行采购,创建一级市场订单表 , 该方法只是设置tbOrder的属性
 		TbOrder tbOrder = methodGoodsTransitService.setTbOrderProperties(tbGoodsTransit, appLoginInfo);
-		//执行保存 创建订单
+		//执行保存 todo:创建订单
 		int insert = tbOrderMapper.insert(tbOrder);
 		if(insert == 1){
+			//将该商品被添加进的购物车的下单状态goodsIsorderStatus改成已下单
+			List<TbGoodsCart> tbGoodsCarts = tbGoodsCartMapper.selectList(new LambdaQueryWrapper<TbGoodsCart>().eq(TbGoodsCart::getPublishGoodsId, goodsTransitId));
+			methodGoodsTransitService.goodsCartIsOrder(tbGoodsCarts);
+			//删除购物车
+			tbGoodsCartMapper.deleteById(purchaseLevelOntGoodsTransitParam.getGoodsCartId());
 			//将商品信息改成已被下单
 			tbGoodsTransit.setIsOrders(1);
 			int updateById = tbGoodsTransitMapper.updateById(tbGoodsTransit);
@@ -277,13 +304,36 @@ public class TbGoodsTransitService extends ServiceImpl<TbGoodsTransitMapper, TbG
 				//获取商家信息
 				TbEnterprise tbEnterprise = tbEnterpriseMapper.selectById(tbGoodsTransit.getMerchantId());
 				if(tbEnterprise == null)throw new RuntimeException("商家不存在!");
-				//通知短信
-				return smsRetryService.sendSmsMsg(tbEnterprise.getContact());
+				//todo:通知短信
+//				return smsRetryService.sendSmsMsg(tbEnterprise.getContact());
+				return true;
 			}
 		}
 		throw new RuntimeException("订单预创建异常!");
 	}
 
+	boolean updateEnterpriseConfirm(TbGoodsTransit tbGoodsTransit) {
+
+		// 商户拒绝接单后把订单状态恢复为默认值
+		if (2 == tbGoodsTransit.getEnterpriseConfirm()) {
+			tbGoodsTransit.setIsOrders(0);//是否已被下单[0=未被下单,1=已被下单]
+			tbGoodsTransit.setGoodsStatus(1);//商品状态(0=下架,1=在售)
+		}
+		updateById(tbGoodsTransit);
+
+		// 商户确认接单后修改订单表的‘商家确认状态’为已确认
+		if (1 == tbGoodsTransit.getEnterpriseConfirm()) {
+			LambdaUpdateWrapper<TbOrder> wrapper = new LambdaUpdateWrapper();
+			//一级市场商户确认(0=待确认,1=是,2=否)
+			wrapper.set(TbOrder::getEnterpriseConfirm, 1);
+			// TODO: 申报[0=待申报,1=申报通过,2=申报不通过]
+			//wrapper.set(TbOrder::getApply, 1);
+
+			wrapper.eq(TbOrder::getGoodsId, tbGoodsTransit.getId());
+			orderService.update(wrapper);
+		}
+		return true;
+	}
 
 	/**
 	 * 导入
@@ -403,4 +453,12 @@ public class TbGoodsTransitService extends ServiceImpl<TbGoodsTransitMapper, TbG
 		return "数据导出完成!共导出 " + count + " 条数据。";
 	}
 
+	/** 远程调用: 根据ID查询过审商品表(tb_goods_transit) */
+	GoodsTransitDto getGoodsTransitById(Long goodsTransitId,Long enterpriseId){
+		TbGoodsTransit tbGoodsTransit = tbGoodsTransitMapper.selectOne(new LambdaQueryWrapper<TbGoodsTransit>().eq(TbGoodsTransit::getId, goodsTransitId).eq(TbGoodsTransit::getMerchantId, enterpriseId));
+		GoodsTransitDto goodsTransitDto = new GoodsTransitDto();
+		BeanUtils.copyProperties(tbGoodsTransit,goodsTransitDto);
+		return goodsTransitDto;
+	}
+
 }

+ 3 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_goods_transit/param/PurchaseLevelOneGoodsTransitParam.java

@@ -19,6 +19,9 @@ public class PurchaseLevelOneGoodsTransitParam {
     @NotBlank(message = "所购商品ID不能为空")
     private String goodsTransitId;
 
+    /** 购物车ID */
+    private Long goodsCartId;
+
 //    private String receiveName;
 //    private String receivePhone;
 //    private String receiveAddress;

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

@@ -33,7 +33,6 @@ public class MethodOrderService {
     public List<TbOrder> checkType(Integer userType, Long fk, SoMap so){
         if(userType == null)return Collections.emptyList();
         if(fk == null)return Collections.emptyList();
-        LambdaQueryWrapper<TbOrder> queryWrapper = new LambdaQueryWrapper<>();
         switch (userType){
             case 1: //边民
                 TbPeople tbPeople = tbPeopleMapper.selectById(fk);
@@ -44,7 +43,7 @@ public class MethodOrderService {
             case 2: //互市组组长
                 so.put("buyUserId",fk);
                 break;
-            case 3: // 一级市场商家
+            case 5: // 一级市场商家
                 so.put("enterpriseId",fk);
                 break;
             default:

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

@@ -76,7 +76,7 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	private Long groupId;
 
 	/**
-	 *  商品ID
+	 *  过审商品id[goodstransitid]
 	 */
 	private Long goodsId;
 
@@ -129,7 +129,12 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	/**
 	 * 交易状态(0=未支付,1=已支付)
 	 */
-	private String tradeStatus;
+	private Integer tradeStatus;
+
+	/**
+	 * 边民或组长取消订单(0=未取消,1=已取消)
+	 */
+	private Integer cancelPeople;
 
 	/**
 	 * 支付方式(0=金融互助,1=现金刷卡)
@@ -161,6 +166,8 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	 */
 	private Long recordUserId;
 
+
+
 	/**
 	 * 对账时间
 	 */
@@ -209,7 +216,7 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	/**
 	 * 是否申报
 	 */
-	private String apply;
+	private Integer apply;
 
 	/**
 	 * 申报时间
@@ -248,7 +255,8 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	/**
 	 * 接单时间
 	 */
-	private String pickTime;
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss SSS")
+	private Date pickTime;
 
 	/**
 	 *

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

@@ -1,11 +1,15 @@
 package com.pj.tb_order;
 
+import com.pj.api.dto.OrderDto;
+import com.pj.project4sp.SP;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Date;
 import java.util.List;
 
 
@@ -21,19 +25,47 @@ public class TbOrderAppController {
 	@Autowired
 	TbOrderService tbOrderService;
 
+
+	/** 增 */
+	@RequestMapping("appAdd")
+//	@SaCheckPermission(TbOrder.PERMISSION_CODE_ADD)
+	public AjaxJson add(TbOrder t){
+		tbOrderService.appAdd(t);
+		t = tbOrderService.getById(SP.publicMapper.getPrimarykey());
+		return AjaxJson.getSuccessData(t);
+	}
+
+	/** 删 - 根据id列表 */
+	@RequestMapping("deleteByIds")
+	public AjaxJson deleteByIds(){
+		List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
+		int line = SP.publicMapper.deleteByIds(TbOrder.TABLE_NAME, ids);
+		return AjaxJson.getByLine(line);
+	}
+
+	/** 改 */
+	@RequestMapping("update")
+	public AjaxJson update(TbOrder t){
+		tbOrderService.update(t);
+		return AjaxJson.getSuccess();
+	}
+
 	/** 查 - 根据id */
 	@RequestMapping("getById")
-//		@SaCheckPermission(TbOrder.PERMISSION_CODE)
 	public AjaxJson getById(Long id){
 		TbOrder t = tbOrderService.getById(id);
 		return AjaxJson.getSuccessData(t);
 	}
 
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
+	/**
+	 * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+	 * @param orderStatus  订单状态,非必填  不传查询所有 , 0=待确认,1=申报中,2=已完成,3=已取消
+	 * @return
+	 */
 	@RequestMapping("getList")
-	public AjaxJson getList() {
+	public AjaxJson getList(@RequestParam(value = "orderStatus",required = false) Integer orderStatus) {
 		SoMap so = SoMap.getRequestSoMap();
-		List<TbOrder> list = tbOrderService.getAPPList(so.startPage());
+		List<TbOrder> list = tbOrderService.getAPPList(so.startPage(),orderStatus);
 		if(list.size() == 0)return AjaxJson.getSuccess("暂无更多的订单消息!");
 		return AjaxJson.getPageData(so.getDataCount(), list);
 	}
@@ -56,5 +88,31 @@ public class TbOrderAppController {
 		return AjaxJson.getError();
 	}
 
+	/**
+	 * 组长或者边民取消订单
+	 * @param orderId  一级市场订单ID
+	 */
+	@RequestMapping("cancelOrder")
+	public AjaxJson cancelOrder(Long orderId) {
+		boolean result = tbOrderService.cancelOrder(orderId);
+		if(result) return AjaxJson.getSuccess();
+		return AjaxJson.getError();
+	}
+
+	/*-----           正常业务逻辑👆👆    rpc远程调用👇👇 -----*/
+
+	/** 改 转售状态:根据订单Id把订单改为已转售 */
+	@RequestMapping("rpc/selectOrderList")
+	public List<OrderDto> selectOrderList(@RequestParam("currDay") Date currDay, @RequestParam("appUserId") Long appUserId) {
+		List<OrderDto> orderDtos = tbOrderService.selectOrderList(currDay,appUserId);
+		return orderDtos;
+	}
+	/** 查 - 根据id查orderDto */
+	@RequestMapping("rpc/getOrderDtoById")
+	public OrderDto getOrderDtoById(@RequestParam("orderId") Long orderId){
+		OrderDto t = tbOrderService.getOrderDtoById(orderId);
+		return t;
+	}
+
 
 }

+ 9 - 9
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderController.java

@@ -22,15 +22,15 @@ public class TbOrderController {
 	/** 底层 Service 对象 */
 	@Autowired
 	TbOrderService tbOrderService;
-
-	/** 增 */  
-	@RequestMapping("add")
-	@SaCheckPermission(TbOrder.PERMISSION_CODE_ADD)
-	public AjaxJson add(TbOrder t){
-		tbOrderService.add(t);
-		t = tbOrderService.getById(SP.publicMapper.getPrimarykey());
-		return AjaxJson.getSuccessData(t);
-	}
+//
+//	/** 增 */
+//	@RequestMapping("add")
+//	@SaCheckPermission(TbOrder.PERMISSION_CODE_ADD)
+//	public AjaxJson add(TbOrder t){
+//		tbOrderService.add(t);
+//		t = tbOrderService.getById(SP.publicMapper.getPrimarykey());
+//		return AjaxJson.getSuccessData(t);
+//	}
 
 	/** 删 */  
 	@RequestMapping("delete")

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

@@ -7,7 +7,7 @@
 
 	<!-- ================================== 查询相关 ================================== -->
 	<!-- select id, trade_area_id, trade_area_name, address_ids, sale_main_id, trade_no, buy_user_id, buy_user_name, buy_user_type, enterprise_id, enterprise_name, total_weight, total_price, trade_time, trade_status, pay_type, settle_time, real_price, should_price, settle_user_id, record_user_id, record_time, record, refund_reason, refund_time, receive_name, receive_phone, receive_address, out_time, goods_names, apply, apply_time, apply_result, apply_fail_reason, distribution, confirm, pick, pick_time, shop_id, shop_name, send, send_time, level_two_order_id, create_time, create_by, create_name, update_time, update_by, update_name, delete_status from tb_order  -->
-	
+
 	<!-- 通用映射:自动模式 -->
 	<resultMap id="model" autoMapping="true" type="com.pj.tb_order.TbOrder"></resultMap>
 
@@ -19,16 +19,19 @@
 	<!-- 公共查询sql片段 -->
 	<sql id="select_sql">
 		select *
-		from tb_order 
+		from tb_order
 	</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("tradeAreaId") '> and trade_area_id = #{tradeAreaId} </if>
+			<if test=' this.has("finishStatus") '> and finish_status = #{finishStatus} </if>
+			<if test=' this.has("cancelPeople") '> and cancel_people = #{cancelPeople} </if>
+			<if test=' this.has("groupId") '> and group_id = #{groupId} </if>
 			<if test=' this.has("tradeAreaName") '> and trade_area_name = #{tradeAreaName} </if>
 			<if test=' this.has("addressIds") '> and address_ids = #{addressIds} </if>
 			<if test=' this.has("saleMainId") '> and sale_main_id = #{saleMainId} </if>
@@ -76,6 +79,7 @@
 			<if test=' this.has("updateBy") '> and update_by = #{updateBy} </if>
 			<if test=' this.has("updateName") '> and update_name = #{updateName} </if>
 			<if test=' this.has("deleteStatus") '> and delete_status = #{deleteStatus} </if>
+			<if test=' this.has("enterpriseConfirm") '> and enterprise_confirm = #{enterpriseConfirm} </if>
 		</where>
 		order by
 		<choose>
@@ -132,14 +136,14 @@
 			<otherwise> id desc </otherwise>
 		</choose>
 	</select>
-	
-	
-	
-	
-	
-	
-	
-	
-	
+
+
+
+
+
+
+
+
+
 
 </mapper>

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

@@ -1,13 +1,26 @@
 package com.pj.tb_order;
 
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.pj.api.dto.OrderDto;
+import com.pj.common.core.exception.ServiceException;
 import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.current.satoken.StpAPPUserUtil;
+import com.pj.enummj.ApplyStatus;
 import com.pj.enummj.DeleteStatus;
+import com.pj.enummj.TradeStatus;
+import com.pj.enummj.UserType;
+import com.pj.tb_goods_transit.TbGoodsTransit;
+import com.pj.tb_goods_transit.TbGoodsTransitMapper;
+import com.pj.tb_people.TbPeople;
+import com.pj.tb_people.TbPeopleMapper;
 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;
@@ -26,11 +39,59 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
 	@Autowired
 	TbOrderMapper tbOrderMapper;
 
+	/** 互市组 */
+	@Autowired
+	private TbPeopleMapper tbPeopleMapper;
+
 	@Autowired
 	private MethodOrderService methodOrderService;
 
-	/** 增 */
-	void add(TbOrder t){
+	@Autowired
+	private TbGoodsTransitMapper tbGoodsTransitMapper;
+
+	/**  app端: 生成一级市场订单 */
+	void appAdd(TbOrder t){
+		//获取当前登陆人
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
+			throw new RuntimeException("当前登录账号信息已失效!");
+		//判断当前是否已接单
+		LambdaQueryWrapper<TbOrder> queryWrapper = new LambdaQueryWrapper<>();
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		queryWrapper.eq(TbOrder::getCreateTime,sdf.format(new Date()));
+		queryWrapper.eq(TbOrder::getDeleteStatus,DeleteStatus.DELETE_STATUS_ON.getCode());
+		List<TbOrder> tbOrderList = tbOrderMapper.selectList(queryWrapper);
+		if(tbOrderList.size() != 0)throw new ServiceException("你 " + tbOrderList.get(0).getCreateTime() + " 已完成下单,请勿继续操作!");
+
+
+		//判断基本状态
+		Integer enterpriseConfirm = t.getEnterpriseConfirm(); //一级市场商户确认(0=待确认,1=是,2=否)
+		String buyUserType = t.getBuyUserType(); //购买用户类型只能是2
+		Integer peopleConfirm = t.getPeopleConfirm();//边民确认[0=待确认,1=全部确认,2=部分边民确认]
+		String pick = t.getPick(); //是否接单[0=待接单,1=已接单]
+
+		if(enterpriseConfirm != 1)throw new ServiceException("商户确认状态异常!");
+		if(!buyUserType.equals(UserType.USER_TYPE_GROUP_LEADER.getCode() + ""))throw new ServiceException("登录用户身份异常!");
+		if(peopleConfirm != 1)throw new ServiceException("边民确认状态异常");
+		if(!pick.equals("1"))throw new ServiceException("接单状态状态异常");
+
+		//设置购买的互市组信息
+		Long fk = appLoginInfo.getFk();
+		TbPeople tbPeople = tbPeopleMapper.selectById(fk);
+		if(tbPeople == null)throw new ServiceException("边民信息异常!");
+		t.setGroupId(tbPeople.getGroupId());
+
+		//设置基本属性
+		t.setApply(ApplyStatus.APPLY_STATUS_ZERO.getCode()); // 申报状态
+		t.setTradeStatus(TradeStatus.TRADE_STATUS_ZERO.getCode()); //支付状态
+		t.setPickTime(new Date()); // 接单时间
+		t.setSend(0); // 发货状态 默认 0=未发货
+		t.setFinishStatus(0); // 完成状态 默认 0=未完成
+		//设置公共属性
+		t.setCreateBy(appLoginInfo.getLoginId());
+		t.setCreateName(appLoginInfo.getLoginName());
+		t.setCreateTime(new Date());
+		t.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode());
 		save(t);
 	}
 
@@ -55,22 +116,72 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
 		return tbOrderMapper.getList(so);
 	}
 
+	/**
+	 * 组长或者边民取消订单
+	 * @param orderId  一级市场订单ID
+	 */
+	public boolean cancelOrder(Long orderId){
+		//获取登录用户
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
+			throw new RuntimeException("当前登录账号信息已失效!");
+		//查询订单
+		TbOrder tbOrder = tbOrderMapper.selectById(orderId);
+		if(tbOrder == null)throw new ServiceException("订单状态异常!");
+		//将状态设置已取消
+		tbOrder.setCancelPeople(1);
+		//执行保存
+		int updateById = tbOrderMapper.updateById(tbOrder);
+		//将goodstransit放开
+		if(updateById == 1){
+			//获取goods TransitID
+			Long goodsId = tbOrder.getGoodsId();
+			TbGoodsTransit tbGoodsTransit = tbGoodsTransitMapper.selectById(goodsId);
+			if(tbGoodsTransit == null)throw new RuntimeException("商品发布信息异常!");
+			//将商品发布修改成可接单状态
+			tbGoodsTransit.setIsOrders(0); // 未被下单
+			tbGoodsTransit.setEnterpriseConfirm(0); // 修改商户确认状态为未确认
+			//执行保存
+			int updated = tbGoodsTransitMapper.updateById(tbGoodsTransit);
+			return updated == 1;
+		}
+		return false;
+	}
+
 
 	/**
 	 * 查集合 - 根据条件(参数为空时代表忽略指定条件)
 	 * APP专用 与该订单相关的任何人员能看
+	 * @param orderStatus  订单状态,非必填  不传查询所有 , 0=待商家确认,1=申报中,2=已完成,3=已取消
 	 * @param so
 	 * @return
 	 */
-	List<TbOrder> getAPPList(SoMap so) {
+	List<TbOrder> getAPPList(SoMap so,Integer orderStatus) {
 		//获取登录用户,登录的用户也许边民,互市组组长,一级市场商家
 		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
 		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
 			throw new RuntimeException("当前登录账号信息已失效!");
 		Integer userType = appLoginInfo.getUserType();
+		//匹配case
+		if(orderStatus != null){
+			switch (orderStatus){
+				case 0:
+					so.put("enterpriseConfirm",0);
+					break;
+				case 1:
+					so.put("apply",0);
+					break;
+				case 2:
+					so.put("finishStatus",1);
+					break;
+				case 3:
+					so.put("cancelPeople",1);
+					break;
+			}
+		}
 		//与订单相关的人能看
 		List<TbOrder> tbOrderList = methodOrderService.checkType(userType,appLoginInfo.getFk(),so);
-		return tbOrderList;
+ 		return tbOrderList;
 	}
 
 	/** 获取当前登陆人订单集合 */
@@ -106,4 +217,38 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
 		return this.update(wrapper);
 	}
 
+
+	/** 远程调用:根据时间和登陆人查询订单 */
+	public List<OrderDto> selectOrderList(Date currDay, Long appUserId){
+		//判断当前是否已接单
+		LambdaQueryWrapper<TbOrder> queryWrapper = new LambdaQueryWrapper<>();
+		//根据当天时间查询
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		queryWrapper.eq(TbOrder::getCreateTime,sdf.format(currDay));
+		queryWrapper.eq(TbOrder::getCreateBy,appUserId);
+		queryWrapper.eq(TbOrder::getDeleteStatus,DeleteStatus.DELETE_STATUS_ON.getCode());
+		List<TbOrder> tbOrderList = tbOrderMapper.selectList(queryWrapper);
+		//创建返回值集合
+		List<OrderDto> result = new ArrayList<>();
+		//执行数据封装
+		if(tbOrderList.size() == 1){
+			tbOrderList.forEach(item -> {
+				OrderDto orderDto = new OrderDto();
+				BeanUtils.copyProperties(item,orderDto);
+				result.add(orderDto);
+			});
+		}
+		//返回
+		return result;
+	}
+
+
+	/** 远程调用  查订单 */
+	OrderDto getOrderDtoById(Long id){
+		TbOrder byId = super.getById(id);
+		OrderDto orderDto = new OrderDto();
+		BeanUtils.copyProperties(byId,orderDto);
+		return orderDto;
+	}
+
 }

+ 9 - 1
sp-service/level-one-server/src/main/java/com/pj/tb_people/TbPeople.java

@@ -231,10 +231,18 @@ public class TbPeople extends Model<TbPeople> implements Serializable {
 	/**
 	 * 删除状态(0=禁用,1=启用) 
 	 */
-	private Integer deleteStatus;	
+	private Integer deleteStatus;
 
 
+	/**
+	 * 互市区域ID
+	 */
+	private Long tradeAreaId;
 
+	/**
+	 * 互市区名称
+	 */
+	private String tradeAreaName;
 
 
 	

+ 36 - 9
sp-service/level-one-server/src/main/java/com/pj/tb_people/TbPeopleService.java

@@ -16,9 +16,9 @@ import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.current.dto.PCLoginUserInfo;
 import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.current.satoken.StpUserUtil;
-import com.pj.enummj.DeleteStatus;
-import com.pj.enummj.IsLock;
-import com.pj.enummj.People;
+import com.pj.enummj.*;
+import com.pj.tb_goods_transit.TbGoodsTransit;
+import com.pj.tb_goods_transit.TbGoodsTransitMapper;
 import com.pj.tb_group.TbGroup;
 import com.pj.tb_group.TbGroupMapper;
 import com.pj.tb_order.TbOrder;
@@ -69,6 +69,8 @@ public class TbPeopleService extends ServiceImpl<TbPeopleMapper, TbPeople> imple
 	/** 订单对象 */
 	@Autowired
 	private TbOrderMapper tbOrderMapper;
+	@Autowired
+	private TbGoodsTransitMapper tbGoodsTransitMapper;
 
 
 	@Autowired
@@ -265,7 +267,29 @@ public class TbPeopleService extends ServiceImpl<TbPeopleMapper, TbPeople> imple
 	 * @param confirm 1=确认,0=拒绝
 	 * @param orderId 一级市场订单表ID
 	 */
-	public void confirmOrder(Integer confirm,Long orderId){
+	public boolean confirmOrder(Integer confirm,Long orderId){
+		//边民拒绝
+		if(confirm == null || confirm != 1){
+			//修改订单表状态
+			TbOrder order = tbOrderMapper.selectById(orderId);
+			if(order == null)throw new ServiceException("订单信息异常!");
+			//设定为边民拒绝
+			order.setPeopleConfirm(2);
+			//执行保存
+			int updated = tbOrderMapper.updateById(order);
+			//将goodstransit修改成未被接单
+			if(updated == 1){
+				Long goodsId = order.getGoodsId();
+				TbGoodsTransit tbGoodsTransit = tbGoodsTransitMapper.selectById(goodsId);
+				if(tbGoodsTransit == null)throw new ServiceException("商品信息异常!");
+				//状态设置0
+				tbGoodsTransit.setIsOrders(0);
+				//执行修改
+				int updateById = tbGoodsTransitMapper.updateById(tbGoodsTransit);
+				return updateById == 1;
+			}
+		}
+		//边民同意
 		//获取登录人
 		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
 		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
@@ -294,15 +318,18 @@ public class TbPeopleService extends ServiceImpl<TbPeopleMapper, TbPeople> imple
 					(new LambdaQueryWrapper<TbOrderPeopleConfirm>().eq(TbOrderPeopleConfirm::getOrderId,orderId));
 			//判断已确认的边民数量
 			if(selectList.size() == selectCount){
-				//执行边民确认
+				//将订单得people_confirm修改成1 , 边民确认
 				TbOrder tbOrder = tbOrderMapper.selectById(orderId);
 				if(tbOrder == null)throw new RuntimeException("当前订单已被组长取消!");
 				tbOrder.setPeopleConfirm(1);
 				int updateById = tbOrderMapper.updateById(tbOrder);
 				if(updateById != 1)throw new RuntimeException("执行边民确认异常!");
+				//todo:发送冻结请求 -> 接收冻结请求,边民账户货款进行冻结,并给出回执
+
+				return true;
 			}
 		}
-
+		return false;
 	}
 
 
@@ -486,9 +513,9 @@ public class TbPeopleService extends ServiceImpl<TbPeopleMapper, TbPeople> imple
 
 	/** 查集合 远程调用 */
 	List<PeopleDto> getPeopleList(SoMap so,Long groupId) {
-		so.set("group_id",groupId);
-		so.set("is_lock",IsLock.IS_LOCK_ON.getCode());
-		so.set("delete_status",DeleteStatus.DELETE_STATUS_ON.getCode());
+		so.put("groupId",groupId);
+		so.put("isLock",IsLock.IS_LOCK_ON.getCode());
+		so.put("deleteStatus",DeleteStatus.DELETE_STATUS_ON.getCode());
 		List<TbPeople> tbPeople = tbPeopleMapper.getList(so);
 		if(tbPeople.size() == 0)return null;
 		//创建返回值集合

+ 1 - 1
sp-service/level-one-server/src/main/java/com/pj/tb_port_news/TbPortNews.java

@@ -89,7 +89,7 @@ public class TbPortNews extends Model<TbPortNews> implements Serializable {
 	 * 发布时间
 	 *
 	 */
-//	@JsonFormat(pattern = "yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd")
 	private Date releaseTime;	
 
 	/**

+ 27 - 28
sp-service/level-one-server/src/main/java/com/pj/tb_port_news/TbPortNewsAppController.java

@@ -1,17 +1,20 @@
 package com.pj.tb_port_news;
 
 import com.pj.utils.sg.AjaxJson;
+import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
-*APP端口岸资讯
-*
-* @author loovi
-* @date
-*/
+ * APP端口岸资讯
+ *
+ * @author loovi
+ * @date
+ */
 @RestController
 @RequestMapping("/app/TbPortNews/")
 public class TbPortNewsAppController {
@@ -20,36 +23,32 @@ public class TbPortNewsAppController {
     TbPortNewsService tbPortNewsService;
 
     /**
-     *APP端获取最新的口岸资讯
+     * APP端获取最新的口岸资讯
      *
      * @author loovi
      * @date
      */
     @RequestMapping("getNewestList")
-    public AjaxJson getNewestList(Long limit){
-        AjaxJson ajaxJson = tbPortNewsService.getNewestList(limit);
-        return ajaxJson;
+    public AjaxJson getNewestList(Long limit) {
+        return tbPortNewsService.getNewestList(limit);
     }
+
     /**
-    *APP端获取口岸资讯列表
-    *
-    * @author loovi
-    * @date
-    */
+     * APP端获取口岸资讯列表
+     *
+     * @author loovi
+     * @date
+     */
     @RequestMapping("getPortNewsList")
-    public AjaxJson getPortNewsList(){
-        AjaxJson ajaxJson = tbPortNewsService.getPortNewsList();
-        return ajaxJson;
+    public AjaxJson getPortNewsList() {
+        SoMap so = SoMap.getRequestSoMap();
+        so.put("status", 1);
+        List<TbPortNews> list = tbPortNewsService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
     }
-    /**
-    *APP端获取口岸资讯详情
-    *
-    * @author loovi
-    * @date
-    */
-    @RequestMapping("getPortNewsDetails")
-    public  AjaxJson getPortNewsDetails(Long id){
-        AjaxJson ajaxJson = tbPortNewsService.getPortNewsDetails(id);
-        return ajaxJson;
+
+    @GetMapping("getById")
+    public AjaxJson getById(Long id) {
+        return tbPortNewsService.getPortNewsDetails(id);
     }
 }

+ 31 - 31
sp-service/level-one-server/src/main/java/com/pj/tb_port_news/TbPortNewsMapper.xml

@@ -20,37 +20,37 @@
 	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [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("title") '> and title = #{title} </if>-->
-<!--			<if test=' this.has("url") '> and url = #{url} </if>-->
-<!--			<if test=' this.has("content") '> and content = #{content} </if>-->
-<!--			<if test=' this.has("source") '> and source = #{source} </if>-->
-<!--			<if test=' this.has("readCount") '> and read_count = #{readCount} </if>-->
-<!--			<if test=' this.has("isRelease") '> and is_release = #{isRelease} </if>-->
-<!--			<if test=' this.has("status") '> and status = #{status} </if>-->
-<!--			<if test=' this.has("createBy") '> and create_by = #{createBy} </if>-->
-<!--			<if test=' this.has("createName") '> and create_name = #{createName} </if>-->
-<!--			<if test=' this.has("updateBy") '> and update_by = #{updateBy} </if>-->
-<!--			<if test=' this.has("updateName") '> and update_name = #{updateName} </if>-->
-<!--		</where>-->
-<!--		order by-->
-<!--		<choose>-->
-<!--			<when test='sortType == 1'> id desc </when>-->
-<!--			<when test='sortType == 2'> title desc </when>-->
-<!--			<when test='sortType == 3'> source desc </when>-->
-<!--			<when test='sortType == 4'> read_count desc </when>-->
-<!--			<when test='sortType == 5'> is_release desc </when>-->
-<!--			<when test='sortType == 6'> release_time desc </when>-->
-<!--			<when test='sortType == 7'> status desc </when>-->
-<!--			<when test='sortType == 8'> create_by desc </when>-->
-<!--			<when test='sortType == 9'> create_name desc </when>-->
-<!--			<when test='sortType == 10'> create_time desc </when>-->
-<!--			<when test='sortType == 11'> update_by desc </when>-->
-<!--			<when test='sortType == 12'> update_name desc </when>-->
-<!--			<when test='sortType == 13'> update_time desc </when>-->
-<!--			<otherwise> id desc </otherwise>-->
-<!--		</choose>-->
+		<where>
+			<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("title") '> and title like concat('%', #{title}, '%') </if>
+			<if test=' this.has("url") '> and url = #{url} </if>
+			<if test=' this.has("content") '> and content = #{content} </if>
+			<if test=' this.has("source") '> and source = #{source} </if>
+			<if test=' this.has("readCount") '> and read_count = #{readCount} </if>
+			<if test=' this.has("isRelease") '> and is_release = #{isRelease} </if>
+			<if test=' this.has("status") '> and status = #{status} </if>
+			<if test=' this.has("createBy") '> and create_by = #{createBy} </if>
+			<if test=' this.has("createName") '> and create_name = #{createName} </if>
+			<if test=' this.has("updateBy") '> and update_by = #{updateBy} </if>
+			<if test=' this.has("updateName") '> and update_name = #{updateName} </if>
+		</where>
+		order by
+		<choose>
+			<when test='sortType == 1'> id desc </when>
+			<when test='sortType == 2'> title desc </when>
+			<when test='sortType == 3'> source desc </when>
+			<when test='sortType == 4'> read_count desc </when>
+			<when test='sortType == 5'> is_release desc </when>
+			<when test='sortType == 6'> release_time desc </when>
+			<when test='sortType == 7'> status desc </when>
+			<when test='sortType == 8'> create_by desc </when>
+			<when test='sortType == 9'> create_name desc </when>
+			<when test='sortType == 10'> create_time desc </when>
+			<when test='sortType == 11'> update_by desc </when>
+			<when test='sortType == 12'> update_name desc </when>
+			<when test='sortType == 13'> update_time desc </when>
+			<otherwise> id desc </otherwise>
+		</choose>
 	</select>
 	
 	

+ 127 - 121
sp-service/level-one-server/src/main/java/com/pj/tb_port_news/TbPortNewsService.java

@@ -25,129 +25,135 @@ import com.pj.utils.sg.*;
 
 /**
  * Service: tb_port_news -- 口岸咨询
+ *
  * @author loovi
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
-public class TbPortNewsService extends ServiceImpl<TbPortNewsMapper, TbPortNews> implements IService<TbPortNews>{
-
-	/** 底层 Mapper 对象 */
-	@Autowired
-	TbPortNewsMapper tbPortNewsMapper;
-
-	/** 增 */
-	void add(TbPortNews t){
-		save(t);
-	}
-
-	/** 删 */
-	void delete(Long id){
-		removeById(id);
-	}
-
-	/** 改 */
-	void update(TbPortNews t){
-		updateById(t);
-
-	}
-
-	/** 查 */
-	TbPortNews getById(Long id){
-		return super.getById(id);
-	}
-
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
-	List<TbPortNews> getList(SoMap so) { 
-		return tbPortNewsMapper.getList(so);	
-	}
-	/**
-	*更新发布状态
-	*
-	* @author loovi
-	* @date
-	*/
-	int updateRelease(Long id, int isRelease){
-
-		// 获取当前登录者信息
-		String str = RedisUtil.get("pc:" + StpUtil.getLoginIdAsString());
-		JSONObject jsonObject = JSONUtil.parseObj(str);
-		String loginId = (String) jsonObject.get("loginId");
-		String loginName = (String)jsonObject.get("loginName");
-		// 获取口岸咨询
-		TbPortNews tbPortNews = tbPortNewsMapper.selectById(id);
-		// 口岸咨询不存在抛异常
-		if(Objects.isNull(tbPortNews)){
-			throw new RuntimeException("口岸咨询不存在");
-		}
-		// 口岸咨询被禁用抛异常
-		if (tbPortNews.getStatus()== DeleteStatus.DELETE_STATUS_OFF.getCode()){
-			throw new RuntimeException("口岸咨询已被禁用");
-		}
-		// 设置口岸咨询发布状态
-		tbPortNews.setIsRelease(isRelease);
-		// 设置口岸咨询发布时间
-		tbPortNews.setReleaseTime(new Date());
-		// 设置口岸咨询更新者id
-		tbPortNews.setUpdateBy(loginId);
-		// 设置口岸咨询更新者名称
-		tbPortNews.setUpdateName(loginName);
-		// 更新口岸咨询
-		int line = tbPortNewsMapper.updateById(tbPortNews);
-		return line;
-	}
-
-
-
-	/**
-	*APP端获取最新的5条口岸资讯
-	*
-	* @author loovi
-	* @date
-	*/
-	public  AjaxJson getNewestList(Long limit){
-		// 构造条件查询最新的资讯
-		QueryWrapper<TbPortNews> queryWrapper = new QueryWrapper<>();
-		queryWrapper.eq("status", DeleteStatus.DELETE_STATUS_ON.getCode())
-				.eq("is_release", ReleaseStatus.RELEASE_STATUS_PUBLISH.getCode())
-				.orderByDesc("release_time")
-				.last("LIMIT " +limit);
-		// 执行查询
-		List<TbPortNews> list = list(queryWrapper);
-		// 将结果列表拷贝至VO列表
-		List<TbPortNewsVo> resList = CglibUtil.copyList(list, TbPortNewsVo::new);
-		// 返回获取的最新口岸资讯
-		return AjaxJson.getSuccess("最新口岸资讯",resList);
-	}
-	/**
-	 *APP端获取口岸资讯列表
-	 *
-	 * @author loovi
-	 * @date
-	 */
-	public  AjaxJson getPortNewsList(){
-		// 构造条件查询资讯列表
-		QueryWrapper<TbPortNews> queryWrapper = new QueryWrapper<>();
-		queryWrapper.eq("status",DeleteStatus.DELETE_STATUS_ON.getCode());
-		// 执行查询
-		List<TbPortNews> list = tbPortNewsMapper.selectList(queryWrapper);
-		// 将结果列表拷贝至VO列表
-		List<TbPortNewsVo> resList = CglibUtil.copyList(list, TbPortNewsVo::new);
-		// 返回获取的最新口岸资讯
-		return AjaxJson.getSuccess("口岸资讯列表",resList);
-	}
-	/**
-	 *APP端获取口岸资讯详情
-	 *
-	 * @author loovi
-	 * @date
-	 */
-	public  AjaxJson getPortNewsDetails(Long id){
-		// 执行查询
-		TbPortNews tbPortNews = tbPortNewsMapper.selectById(id);
-		if(Objects.isNull(tbPortNews)){
-			throw new RuntimeException("资讯不存在");
-		}
-		// 返回获取的最新口岸资讯
-		return AjaxJson.getSuccess("口岸资讯详情",tbPortNews.getContent());
-	}
+public class TbPortNewsService extends ServiceImpl<TbPortNewsMapper, TbPortNews> implements IService<TbPortNews> {
+
+    /**
+     * 底层 Mapper 对象
+     */
+    @Autowired
+    TbPortNewsMapper tbPortNewsMapper;
+
+    /**
+     * 增
+     */
+    void add(TbPortNews t) {
+        save(t);
+    }
+
+    /**
+     * 删
+     */
+    void delete(Long id) {
+        removeById(id);
+    }
+
+    /**
+     * 改
+     */
+    void update(TbPortNews t) {
+        updateById(t);
+
+    }
+
+    /**
+     * 查
+     */
+    TbPortNews getById(Long id) {
+        return super.getById(id);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    List<TbPortNews> getList(SoMap so) {
+        return tbPortNewsMapper.getList(so);
+    }
+
+    /**
+     * 更新发布状态
+     *
+     * @author loovi
+     * @date
+     */
+    int updateRelease(Long id, int isRelease) {
+
+        // 获取当前登录者信息
+        String str = RedisUtil.get("pc:" + StpUtil.getLoginIdAsString());
+        JSONObject jsonObject = JSONUtil.parseObj(str);
+        String loginId = (String) jsonObject.get("loginId");
+        String loginName = (String) jsonObject.get("loginName");
+        // 获取口岸咨询
+        TbPortNews tbPortNews = tbPortNewsMapper.selectById(id);
+        // 口岸咨询不存在抛异常
+        if (Objects.isNull(tbPortNews)) {
+            throw new RuntimeException("口岸咨询不存在");
+        }
+        // 口岸咨询被禁用抛异常
+        if (tbPortNews.getStatus() == DeleteStatus.DELETE_STATUS_OFF.getCode()) {
+            throw new RuntimeException("口岸咨询已被禁用");
+        }
+        // 设置口岸咨询发布状态
+        tbPortNews.setIsRelease(isRelease);
+        // 设置口岸咨询发布时间
+        tbPortNews.setReleaseTime(new Date());
+        // 设置口岸咨询更新者id
+        tbPortNews.setUpdateBy(loginId);
+        // 设置口岸咨询更新者名称
+        tbPortNews.setUpdateName(loginName);
+        // 更新口岸咨询
+        int line = tbPortNewsMapper.updateById(tbPortNews);
+        return line;
+    }
+
+
+    /**
+     * APP端获取最新的5条口岸资讯
+     *
+     * @author loovi
+     * @date
+     */
+    public AjaxJson getNewestList(Long limit) {
+        QueryWrapper<TbPortNews> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("status", 1).eq("is_release", ReleaseStatus.RELEASE_STATUS_PUBLISH.getCode()).orderByDesc("release_time").last("LIMIT " + limit);
+        return AjaxJson.getSuccessData(list(queryWrapper));
+    }
+
+    /**
+     * APP端获取口岸资讯列表
+     *
+     * @author loovi
+     * @date
+     */
+    public AjaxJson getPortNewsList() {
+        // 构造条件查询资讯列表
+        QueryWrapper<TbPortNews> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("status", DeleteStatus.DELETE_STATUS_ON.getCode());
+        // 执行查询
+        List<TbPortNews> list = tbPortNewsMapper.selectList(queryWrapper);
+        // 将结果列表拷贝至VO列表
+        List<TbPortNewsVo> resList = CglibUtil.copyList(list, TbPortNewsVo::new);
+        // 返回获取的最新口岸资讯
+        return AjaxJson.getSuccess("口岸资讯列表", resList);
+    }
+
+    /**
+     * APP端获取口岸资讯详情
+     *
+     * @author loovi
+     * @date
+     */
+    public AjaxJson getPortNewsDetails(Long id) {
+        TbPortNews tbPortNews = tbPortNewsMapper.selectById(id);
+        if (tbPortNews != null && tbPortNews.getStatus() == 1) {
+            tbPortNews.setReadCount(tbPortNews.getReadCount() + 1);
+            tbPortNewsMapper.updateById(tbPortNews);
+            return AjaxJson.getSuccessData(tbPortNews);
+        }
+        return AjaxJson.getError();
+    }
 }

+ 51 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_trade_area/TbTradeAreaAppController.java

@@ -0,0 +1,51 @@
+package com.pj.tb_trade_area;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pj.project4sp.SP;
+import com.pj.utils.sg.AjaxJson;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+
+/**
+ * Controller: tb_trade_area -- 贸易区域(app接口)
+ * @author lbl
+ */
+@RestController
+@RequestMapping("/app/TbTradeArea/")
+public class TbTradeAreaAppController {
+
+	/** 底层 Service 对象 */
+	@Autowired
+	TbTradeAreaService tbTradeAreaService;
+
+
+
+	/** 查 - 根据id */
+	@RequestMapping("getById")
+//		@SaCheckPermission(TbTradeArea.PERMISSION_CODE)
+	public AjaxJson getById(String id){
+		TbTradeArea t = tbTradeAreaService.getById(id);
+		return AjaxJson.getSuccessData(t);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
+	@RequestMapping("getList")
+//		@SaCheckPermission(TbTradeArea.PERMISSION_CODE)
+	public AjaxJson getList() {
+		SoMap so = SoMap.getRequestSoMap();
+		so.set("deleteStatus", 1);
+		List<TbTradeArea> list = tbTradeAreaService.getList(so.startPage());
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
+
+}

+ 27 - 27
sp-service/level-one-server/src/main/java/com/pj/tb_trade_area/TbTradeAreaMapper.xml

@@ -36,33 +36,33 @@
 	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [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("name") '> and name = #{name} </if>-->
-<!--			<if test=' this.has("addressIds") '> and address_ids = #{addressIds} </if>-->
-<!--			<if test=' this.has("detailAddress") '> and detail_address = #{detailAddress} </if>-->
-<!--			<if test=' this.has("address") '> and address = #{address} </if>-->
-<!--			<if test=' this.has("createBy") '> and create_by = #{createBy} </if>-->
-<!--			<if test=' this.has("createName") '> and create_name = #{createName} </if>-->
-<!--			<if test=' this.has("updateBy") '> and update_by = #{updateBy} </if>-->
-<!--			<if test=' this.has("updateName") '> and update_name = #{updateName} </if>-->
-<!--			<if test=' this.has("deleteStatus") '> and delete_status = #{deleteStatus} </if>-->
-<!--		</where>-->
-<!--		order by-->
-<!--		<choose>-->
-<!--			<when test='sortType == 1'> id desc </when>-->
-<!--			<when test='sortType == 2'> name desc </when>-->
-<!--			<when test='sortType == 3'> address_ids desc </when>-->
-<!--			<when test='sortType == 4'> detail_address desc </when>-->
-<!--			<when test='sortType == 5'> address desc </when>-->
-<!--			<when test='sortType == 6'> create_time desc </when>-->
-<!--			<when test='sortType == 7'> create_by desc </when>-->
-<!--			<when test='sortType == 8'> create_name desc </when>-->
-<!--			<when test='sortType == 9'> update_by desc </when>-->
-<!--			<when test='sortType == 10'> update_name desc </when>-->
-<!--			<when test='sortType == 11'> update_time desc </when>-->
-<!--			<otherwise> id desc </otherwise>-->
-<!--		</choose>-->
+		<where>
+			<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("name") '> and name like concat('%', #{name}, '%') </if>
+			<if test=' this.has("addressIds") '> and address_ids = #{addressIds} </if>
+			<if test=' this.has("detailAddress") '> and detail_address = #{detailAddress} </if>
+			<if test=' this.has("address") '> and address = #{address} </if>
+			<if test=' this.has("createBy") '> and create_by = #{createBy} </if>
+			<if test=' this.has("createName") '> and create_name = #{createName} </if>
+			<if test=' this.has("updateBy") '> and update_by = #{updateBy} </if>
+			<if test=' this.has("updateName") '> and update_name = #{updateName} </if>
+			<if test=' this.has("deleteStatus") '> and delete_status = #{deleteStatus} </if>
+		</where>
+		order by
+		<choose>
+			<when test='sortType == 1'> id desc </when>
+			<when test='sortType == 2'> name desc </when>
+			<when test='sortType == 3'> address_ids desc </when>
+			<when test='sortType == 4'> detail_address desc </when>
+			<when test='sortType == 5'> address desc </when>
+			<when test='sortType == 6'> create_time desc </when>
+			<when test='sortType == 7'> create_by desc </when>
+			<when test='sortType == 8'> create_name desc </when>
+			<when test='sortType == 9'> update_by desc </when>
+			<when test='sortType == 10'> update_name desc </when>
+			<when test='sortType == 11'> update_time desc </when>
+			<otherwise> id desc </otherwise>
+		</choose>
 	</select>
 	
 	

+ 75 - 74
sp-service/level-two-server/src/main/java/com/pj/tb_demand_quotation/AppTbDemandQuotationController.java

@@ -6,98 +6,99 @@ 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.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
 
 /**
  * app: tb_demand_quotation -- 一级市场组长需求抢购表
- * @author yzs 
+ *
+ * @author yzs
  */
 @RestController
 @RequestMapping("/app/TbDemandQuotation/")
 public class AppTbDemandQuotationController {
 
-	/** 底层 Service 对象 */
-	@Autowired
-	TbDemandQuotationService tbDemandQuotationService;
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    TbDemandQuotationService tbDemandQuotationService;
 
-	/** 增 */  
-	@RequestMapping("add")
+    /**
+     * 增
+     */
+    @RequestMapping("add")
 //	@SaCheckPermission(TbDemandQuotation.PERMISSION_CODE_ADD)
-	public AjaxJson add(TbDemandQuotation t){
-		tbDemandQuotationService.add(t);
-		t = tbDemandQuotationService.getById(SP.publicMapper.getPrimarykey());
-		return AjaxJson.getSuccessData(t);
-	}
-
-	/** 删 */  
-	@RequestMapping("delete")
+    public AjaxJson add(TbDemandQuotation t) {
+        tbDemandQuotationService.add(t);
+        t = tbDemandQuotationService.getById(SP.publicMapper.getPrimarykey());
+        return AjaxJson.getSuccessData(t);
+    }
+
+    /**
+     * 删
+     */
+    @RequestMapping("delete")
 //	@SaCheckPermission(TbDemandQuotation.PERMISSION_CODE_DEL)
-	public AjaxJson delete(Long id){
-		 tbDemandQuotationService.delete(id);
-		return AjaxJson.getSuccess();
-	}
-	
-	/** 删 - 根据id列表 */  
-	@RequestMapping("deleteByIds")
+    public AjaxJson delete(Long id) {
+        tbDemandQuotationService.delete(id);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 删 - 根据id列表
+     */
+    @RequestMapping("deleteByIds")
 //	@SaCheckPermission(TbDemandQuotation.PERMISSION_CODE_DEL)
-	public AjaxJson deleteByIds(){
-		List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class); 
-		int line = SP.publicMapper.deleteByIds(TbDemandQuotation.TABLE_NAME, ids);
-		return AjaxJson.getByLine(line);
-	}
-	
-	/** 改 */  
-	@RequestMapping("update")
+    public AjaxJson deleteByIds() {
+        List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
+        int line = SP.publicMapper.deleteByIds(TbDemandQuotation.TABLE_NAME, ids);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 改
+     */
+    @RequestMapping("update")
 //	@SaCheckPermission(TbDemandQuotation.PERMISSION_CODE_EDIT)
-	public AjaxJson update(TbDemandQuotation t){
-		tbDemandQuotationService.update(t);
-		return AjaxJson.getSuccess();
-	}
-
-	/** 查 - 根据id */  
-	@RequestMapping("getById")
+    public AjaxJson update(TbDemandQuotation t) {
+        tbDemandQuotationService.update(t);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 查 - 根据id
+     */
+    @RequestMapping("getById")
 //		@SaCheckPermission(TbDemandQuotation.PERMISSION_CODE)
-	public AjaxJson getById(Long id){
-		TbDemandQuotation t = tbDemandQuotationService.getById(id);
-		return AjaxJson.getSuccessData(t);
-	}
-
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
-	@RequestMapping("getList")
+    public AjaxJson getById(Long id) {
+        TbDemandQuotation t = tbDemandQuotationService.getById(id);
+        return AjaxJson.getSuccessData(t);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    @RequestMapping("getList")
 //		@SaCheckPermission(TbDemandQuotation.PERMISSION_CODE)
-	public AjaxJson getList() { 
-		SoMap so = SoMap.getRequestSoMap();
-		List<TbDemandQuotation> list = tbDemandQuotationService.getList(so.startPage());
-		return AjaxJson.getPageData(so.getDataCount(), list);
-	}
-
-
-	/**
-	 * 一级市场组长接单
-	 * @param demandQuotationParam
-	 * @return
-	 * @throws Exception
-	 */
-	@RequestMapping("quotation")
-//		@SaCheckPermission(TbDemandQuotation.PERMISSION_CODE)
-	public AjaxJson quotation(@Validated @RequestBody DemandQuotationParam demandQuotationParam) throws Exception {
-		boolean quotation = tbDemandQuotationService.quotation(demandQuotationParam);
-		if(!quotation)return AjaxJson.getError("抢单失败!");
-		return AjaxJson.getSuccess();
-	}
-
-
-
-
-
-
-
+    public AjaxJson getList() {
+        SoMap so = SoMap.getRequestSoMap();
+        List<TbDemandQuotation> list = tbDemandQuotationService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+
+    /**
+     * 二级市场组长接单
+     */
+    @PostMapping("quotation")
+    public AjaxJson quotation(@Validated DemandQuotationParam demandQuotationParam) throws Exception {
+        boolean quotation = tbDemandQuotationService.quotation(demandQuotationParam);
+        if (!quotation) return AjaxJson.getError("抢单失败!");
+        return AjaxJson.getSuccess();
+    }
 
 
 }

+ 22 - 22
sp-service/level-two-server/src/main/java/com/pj/tb_demand_quotation/TbDemandQuotation.java

@@ -13,7 +13,7 @@ import lombok.experimental.Accessors;
 
 /**
  * Model: tb_demand_quotation -- 一级市场组长需求报价表
- * @author yzs 
+ * @author yzs
  */
 @Data
 @Accessors(chain = true)
@@ -23,15 +23,15 @@ public class TbDemandQuotation extends Model<TbDemandQuotation> implements Seria
 
 	// ---------- 模块常量 ----------
 	/**
-	 * 序列化版本id 
+	 * 序列化版本id
 	 */
-	private static final long serialVersionUID = 1L;	
+	private static final long serialVersionUID = 1L;
 	/**
-	 * 此模块对应的表名 
+	 * 此模块对应的表名
 	 */
-	public static final String TABLE_NAME = "tb_demand_quotation";	
+	public static final String TABLE_NAME = "tb_demand_quotation";
 	/**
-	 * 此模块对应的权限码 
+	 * 此模块对应的权限码
 	 */
 	public static final String PERMISSION_CODE = "tb-demand-quotation";
 	public static final String PERMISSION_CODE_ADD = "tb-demand-quotation-add";
@@ -46,47 +46,47 @@ public class TbDemandQuotation extends Model<TbDemandQuotation> implements Seria
 	 * 一级市场组长需求报价表ID
 	 */
 	@TableId(type = IdType.AUTO)
-	private Long id;	
+	private Long id;
 
 	/**
-	 * 一级市场互市组组长ID(tb_people) 
+	 * 一级市场互市组组长ID(tb_people)
 	 */
-	private Long leaderId;	
+	private Long leaderId;
 	/**
 	 * 组ID
 	 */
 	private Long groupId;
 
 	/**
-	 * 组名称 
+	 * 组名称
 	 */
-	private String groupName;	
+	private String groupName;
 	/**
 	 *  联系电话
 	 */
 	private String linkPhone;
 
 	/**
-	 * 二级市场收购商需求表ID 
+	 * 二级市场收购商需求表ID
 	 */
 	private Long demandId;
 
 	/**
-	 * 二级市场收购商需求表ID
+	 * 互市区ID
 	 */
 	private Long tradeAreaId;
 	/**
-	 * 二级市场收购商需求表
+	 * 互市区名称
 	 */
 	private String tradeAreaName;
 
 	/**
-	 * 报价(CNY) 
+	 * 报价(CNY)
 	 */
-	private Double quotation;	
+	private Double quotation;
 
 	/**
-	 * 创建人编号 
+	 * 创建人编号
 	 */
 	private Long createBy;
 	/**
@@ -95,16 +95,16 @@ public class TbDemandQuotation extends Model<TbDemandQuotation> implements Seria
 	private Long purchaserId;
 
 	/**
-	 * 创建人名称(报价人) 
+	 * 创建人名称(报价人)
 	 */
-	private String createName;	
+	private String createName;
 	/**
 	 * 组长备注
 	 */
 	private String remark;
 
 	/**
-	 * 创建时间 
+	 * 创建时间
 	 */
 	@JsonFormat(pattern = "yyyy-MM-dd")
 	private Date createTime;
@@ -115,7 +115,7 @@ public class TbDemandQuotation extends Model<TbDemandQuotation> implements Seria
 	private Date resultTime;
 
 	/**
-	 * 删除状态 
+	 * 删除状态
 	 */
 	private Integer deleteStatus;
 
@@ -128,7 +128,7 @@ public class TbDemandQuotation extends Model<TbDemandQuotation> implements Seria
 
 
 
-	
+
 
 
 }

+ 108 - 84
sp-service/level-two-server/src/main/java/com/pj/tb_demand_quotation/TbDemandQuotationService.java

@@ -24,101 +24,125 @@ import org.springframework.transaction.annotation.Transactional;
 
 /**
  * Service: tb_demand_quotation -- 一级市场组长需求抢购表
- * @author yzs 
+ *
+ * @author yzs
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
-public class TbDemandQuotationService extends ServiceImpl<TbDemandQuotationMapper, TbDemandQuotation> implements IService<TbDemandQuotation>{
+public class TbDemandQuotationService extends ServiceImpl<TbDemandQuotationMapper, TbDemandQuotation> implements IService<TbDemandQuotation> {
 
-	/** 底层 Mapper 对象 */
-	@Autowired
-	TbDemandQuotationMapper tbDemandQuotationMapper;
-	/** 远程调用 */
-	@Autowired
-	private LevelOneServerInterface levelOneServerInterface;
-	/** 失败重试机制 */
-	@Autowired
-	private SmsRetryService smsRetryService;
-	/** 二级收购商需求 */
-	@Autowired
-	private TbGoodsDemandMapper tbGoodsDemandMapper;
-	/** 二级市场收购商 */
-	@Autowired
-	private TbPurchaserMapper tbPurchaserMapper;
+    /**
+     * 底层 Mapper 对象
+     */
+    @Autowired
+    TbDemandQuotationMapper tbDemandQuotationMapper;
+    /**
+     * 远程调用
+     */
+    @Autowired
+    private LevelOneServerInterface levelOneServerInterface;
+    /**
+     * 失败重试机制
+     */
+    @Autowired
+    private SmsRetryService smsRetryService;
+    /**
+     * 二级收购商需求
+     */
+    @Autowired
+    private TbGoodsDemandMapper tbGoodsDemandMapper;
+    /**
+     * 二级市场收购商
+     */
+    @Autowired
+    private TbPurchaserMapper tbPurchaserMapper;
 
-	/** 增 */
-	void add(TbDemandQuotation t){
-		save(t);
-	}
+    /**
+     * 增
+     */
+    void add(TbDemandQuotation t) {
+        save(t);
+    }
 
-	/** 删 */
-	void delete(Long id){
-		removeById(id);
-	}
+    /**
+     * 删
+     */
+    void delete(Long id) {
+        removeById(id);
+    }
 
-	/** 改 */
-	void update(TbDemandQuotation t){
-		updateById(t);
+    /**
+     * 改
+     */
+    void update(TbDemandQuotation t) {
+        updateById(t);
 
-	}
+    }
 
-	/** 查 */
-	TbDemandQuotation getById(Long id){
-		return super.getById(id);
-	}
+    /**
+     * 查
+     */
+    TbDemandQuotation getById(Long id) {
+        return super.getById(id);
+    }
 
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
-	List<TbDemandQuotation> getList(SoMap so) { 
-		return tbDemandQuotationMapper.getList(so);	
-	}
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    List<TbDemandQuotation> getList(SoMap so) {
+        return tbDemandQuotationMapper.getList(so);
+    }
 
 
-	/**
-	 * 互市组组长接单
-	 * @param demandQuotationParam
-	 */
-	public boolean quotation(DemandQuotationParam demandQuotationParam) throws Exception {
-		//获取并判断当前登陆人
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
-			throw new ServiceException("当前登录账号信息已失效!");
-		//判定接单状态
-		if(demandQuotationParam.getIsOrders() != 1)throw new ServiceException("非法操作!");
-		//获取边民组信息
-		PeopleDto rpcById = levelOneServerInterface.getRpcById(appLoginInfo.getFk());
-		if(rpcById == null)throw new ServiceException("边民组信息有误!");
-		//判断组长身份
-		if(rpcById.getRole() != 2)throw new ServiceException("您当前身份不是组长,无法抢单报价!");
-		//执行接单报价
-		TbDemandQuotation tbDemandQuotation = new TbDemandQuotation();
-		tbDemandQuotation.setQuotationResult(0); //默认待商家确认
-		tbDemandQuotation.setPurchaserId(demandQuotationParam.getPurchaserId()); // 商家ID
-		tbDemandQuotation.setDemandId(demandQuotationParam.getGoodsDemandId()); //需求表ID
-		tbDemandQuotation.setQuotation(demandQuotationParam.getPrice()); // 报价
-		tbDemandQuotation.setCreateBy(appLoginInfo.getLoginId()); //创建人登陆表主键
-		tbDemandQuotation.setRemark(appLoginInfo.getLoginName() + ": " +  demandQuotationParam.getRemark()); //报价备注
-		tbDemandQuotation.setLeaderId(appLoginInfo.getFk());  //边民表主键
-		tbDemandQuotation.setGroupName(rpcById.getGroupName()); // 互市组组名
-		tbDemandQuotation.setCreateTime(new Date()); //创建时间
-		tbDemandQuotation.setGroupId(rpcById.getGroupId());
-		tbDemandQuotation.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode()); // 删除状态默认可用
-		int insert = tbDemandQuotationMapper.insert(tbDemandQuotation);
-		if(insert == 1){
-			//修改二级市场收购商的需求状态
-			TbGoodsDemand tbGoodsDemand = tbGoodsDemandMapper.selectById(demandQuotationParam.getGoodsDemandId());
-			if(tbGoodsDemand == null || tbGoodsDemand.getIsOrders() == 1 || tbGoodsDemand.getDeleteStatus() == 0)
-				throw new RuntimeException("二级市场收购商需求订单状态异常!");
-			//执行修改二级市场收购商需求状态
-			tbGoodsDemand.setIsOrders(demandQuotationParam.getIsOrders());
-			int updateById = tbGoodsDemandMapper.updateById(tbGoodsDemand);
-			if(updateById != 1)throw new RuntimeException("无法进行报价!");
-			//短信提示二级市场收购商,需求已报价,进入app进行确认接单
-			TbPurchaser tbPurchaser = tbPurchaserMapper.selectById(tbGoodsDemand.getPurchaserId());
-			if(tbPurchaser == null)throw new RuntimeException("服务器繁忙~");
-			return smsRetryService.sendSmsMsg(tbPurchaser.getContact());
-		}
-			throw new RuntimeException("抢单报价失败!");
-	}
-	
+    /**
+     * 互市组组长接单
+     *
+     * @param demandQuotationParam
+     */
+    public boolean quotation(DemandQuotationParam demandQuotationParam) throws Exception {
+        //获取并判断当前登陆人
+        APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+        if (appLoginInfo == null || appLoginInfo.getLoginId() == null)
+            throw new ServiceException("当前登录账号信息已失效!");
+        demandQuotationParam.setIsOrders(1);
+        //获取边民组信息
+        PeopleDto rpcById = levelOneServerInterface.getRpcById(appLoginInfo.getFk());
+        if (rpcById == null) throw new ServiceException("边民组信息有误!");
+        //判断组长身份
+        if (rpcById.getRole() != 2) throw new ServiceException("您当前身份不是组长,无法抢单报价!");
+        //执行接单报价
+        TbDemandQuotation tbDemandQuotation = new TbDemandQuotation();
+        tbDemandQuotation.setQuotationResult(0); //默认待商家确认
+        tbDemandQuotation.setPurchaserId(demandQuotationParam.getPurchaserId()); // 商家ID
+        tbDemandQuotation.setDemandId(demandQuotationParam.getGoodsDemandId()); //需求表ID
+        tbDemandQuotation.setQuotation(demandQuotationParam.getPrice()); // 报价
+        tbDemandQuotation.setCreateBy(appLoginInfo.getLoginId()); //创建人登陆表主键
+        tbDemandQuotation.setRemark(appLoginInfo.getLoginName() + ": " + demandQuotationParam.getRemark()); //报价备注
+        tbDemandQuotation.setLeaderId(appLoginInfo.getFk());  //边民表主键
+        tbDemandQuotation.setGroupName(rpcById.getGroupName()); // 互市组组名
+        tbDemandQuotation.setCreateTime(new Date()); //创建时间
+        tbDemandQuotation.setGroupId(rpcById.getGroupId());
+        tbDemandQuotation.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode()); // 删除状态默认可用
+        tbDemandQuotation.setCreateName(appLoginInfo.getLoginName());
+        int insert = tbDemandQuotationMapper.insert(tbDemandQuotation);
+        if (insert == 1) {
+            //修改二级市场收购商的需求状态
+            TbGoodsDemand tbGoodsDemand = tbGoodsDemandMapper.selectById(demandQuotationParam.getGoodsDemandId());
+            if (tbGoodsDemand == null || tbGoodsDemand.getIsOrders() == 1 || tbGoodsDemand.getDeleteStatus() == 0)
+                throw new RuntimeException("二级市场收购商需求订单状态异常!");
+            //执行修改二级市场收购商需求状态
+            tbGoodsDemand.setIsOrders(demandQuotationParam.getIsOrders());
+            int updateById = tbGoodsDemandMapper.updateById(tbGoodsDemand);
+            if (updateById != 1) throw new RuntimeException("无法进行报价!");
+            //短信提示二级市场收购商,需求已报价,进入app进行确认接单
+            TbPurchaser tbPurchaser = tbPurchaserMapper.selectById(tbGoodsDemand.getPurchaserId());
+            if (tbPurchaser == null) throw new RuntimeException("服务器繁忙~");
+            //todo:发送短信
+//			smsRetryService.sendSmsMsg(tbPurchaser.getContact());
+            return true;
+        }
+        throw new RuntimeException("抢单报价失败!");
+    }
+
 
 }

+ 8 - 5
sp-service/level-two-server/src/main/java/com/pj/tb_demand_quotation/param/DemandQuotationParam.java

@@ -4,6 +4,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 /**
  * @Author Mechrevo
@@ -14,17 +15,19 @@ import javax.validation.constraints.NotBlank;
 public class DemandQuotationParam {
 
     /** 二级市场收购商需求表ID */
-    @NotBlank(message = "goodsDemandId")
+    @NotNull(message = "goodsDemandId")
     private Long goodsDemandId;
-    /** 接单状态,默认传个 1 */
-    @NotBlank(message = "isOrders")
+
     private Integer isOrders;
+
     /** 报价 */
-    @NotBlank(message = "price")
+    @NotNull(message = "price")
     private Double price;
+
     /** 二级市场收购商主键ID */
-    @NotBlank(message = "purchaserId")
+    @NotNull(message = "purchaserId")
     private Long purchaserId;
+
     private String remark;
 
 }

+ 121 - 91
sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/AppTbGoodsDemandController.java

@@ -1,10 +1,12 @@
 package com.pj.tb_goods_demand;
 
+import com.pj.enummj.DeleteStatus;
 import com.pj.project4sp.SP;
 import com.pj.tb_goods_demand.vo.GoodsDemandVo;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
@@ -14,101 +16,129 @@ import java.util.List;
 
 /**
  * Controller: tb_goods_demand -- 二级收购商需求发布表
- * @author yzs 
+ *
+ * @author yzs
  */
 @RestController
 @RequestMapping("/app/TbGoodsDemand/")
 public class AppTbGoodsDemandController {
 
-	/** 底层 Service 对象 */
-	@Autowired
-	TbGoodsDemandService tbGoodsDemandService;
-
-	/** 增 */  
-	@RequestMapping("add")
-//	@SaCheckPermission(TbGoodsDemand.PERMISSION_CODE_ADD)
-	public AjaxJson add(TbGoodsDemand t){
-		tbGoodsDemandService.add(t);
-		t = tbGoodsDemandService.getById(SP.publicMapper.getPrimarykey());
-		return AjaxJson.getSuccessData(t);
-	}
-
-	/** 删 */  
-	@RequestMapping("delete")
-//	@SaCheckPermission(TbGoodsDemand.PERMISSION_CODE_DEL)
-	public AjaxJson delete(Long id){
-		 tbGoodsDemandService.delete(id);
-		return AjaxJson.getSuccess();
-	}
-	
-	/** 删 - 根据id列表 */  
-	@RequestMapping("deleteByIds")
-//	@SaCheckPermission(TbGoodsDemand.PERMISSION_CODE_DEL)
-	public AjaxJson deleteByIds(){
-		List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class); 
-		int line = SP.publicMapper.deleteByIds(TbGoodsDemand.TABLE_NAME, ids);
-		return AjaxJson.getByLine(line);
-	}
-	
-	/** 改 */  
-	@RequestMapping("update")
-//	@SaCheckPermission(TbGoodsDemand.PERMISSION_CODE_EDIT)
-	public AjaxJson update(TbGoodsDemand t){
-		tbGoodsDemandService.update(t);
-		return AjaxJson.getSuccess();
-	}
-
-	/** 查 - 根据id */  
-	@RequestMapping("getById")
-//		@SaCheckPermission(TbGoodsDemand.PERMISSION_CODE)
-	public AjaxJson getById(Long id){
-		TbGoodsDemand t = tbGoodsDemandService.getById(id);
-		return AjaxJson.getSuccessData(t);
-	}
-
-	/** app端:专供给一级市场查看的需求列表*/
-	@RequestMapping("getAppList")
-//		@SaCheckPermission(TbGoodsDemand.PERMISSION_CODE)
-	public AjaxJson getAppList(@RequestParam(value = "isOrders",required = false)Integer isOrders) {
-		SoMap so = SoMap.getRequestSoMap();
-		List<TbGoodsDemand> list = tbGoodsDemandService.getAppList(so.startPage(),isOrders);
-		return AjaxJson.getPageData(so.getDataCount(), list);
-	}
-	
-	/** app端:专供给一级市场查看的需求列表*/
-	@RequestMapping("goodsDemandList")
-//		@SaCheckPermission(TbGoodsDemand.PERMISSION_CODE)
-	public AjaxJson goodsDemandList(@RequestParam(value = "isOrders",required = false)Integer isOrders) {
-		SoMap so = SoMap.getRequestSoMap();
-		List<GoodsDemandVo> goodsDemandVos = tbGoodsDemandService.goodsDemandList(so.startPage(),isOrders);
-		return AjaxJson.getPageData(so.getDataCount(), goodsDemandVos);
-	}
-
-	/** app端:  二级市场收购商处理已被报价的需求
-	 * @param disposeStatus 商家处理状态,只能是1或者2,其他值会抛异常 , 1=同意,2=拒绝
-	 * @param goodsDemandId  需求表主键
-	 * @param demandQuotationId  报价表主键
-	 * @param purchaserRemark 商家的备注,非必填
-	 * @return true/false
-	 */
-	@RequestMapping("disposeOrders")
-//		@SaCheckPermission(TbGoodsDemand.PERMISSION_CODE)
-	public AjaxJson disposeOrders(@RequestParam(value = "disposeStatus")Integer disposeStatus,
-								  @RequestParam("goodsDemandId") Long goodsDemandId,
-								  @RequestParam("demandQuotationId") Long demandQuotationId,
-								  @RequestParam(value = "purchaserRemark",required = false) String purchaserRemark) {
-		boolean disposed = tbGoodsDemandService.disposeOrders(disposeStatus, goodsDemandId, demandQuotationId, purchaserRemark);
-		if(disposed)return AjaxJson.getSuccess("处理报价结果成功!");
-		return AjaxJson.getError("处理报价结果失败!");
-	}
-
-
-
-	
-	
-
-	
-	
-	
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    TbGoodsDemandService tbGoodsDemandService;
+
+    /**
+     * 二级市场
+     */
+    @RequestMapping("getList")
+    public AjaxJson getList() {
+        SoMap so = SoMap.getRequestSoMap();
+        so.put("isOrders", 0);
+        so.put("isRelease", 1);
+        so.put("deleteStatus", DeleteStatus.DELETE_STATUS_ON.getCode());
+        List<TbGoodsDemand> list = tbGoodsDemandService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+    /**
+     * 增
+     */
+    @RequestMapping("add")
+    public AjaxJson add(TbGoodsDemand t) {
+        tbGoodsDemandService.add(t);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 发布|取消发布
+     */
+    @PostMapping("changeState")
+    public AjaxJson changeState(TbGoodsDemand dto) {
+        TbGoodsDemand t = new TbGoodsDemand();
+        t.setId(dto.getId());
+        t.setIsRelease(dto.getIsRelease());
+        return AjaxJson.toAjax(tbGoodsDemandService.updateById(t));
+    }
+
+    /**
+     * 删
+     */
+    @RequestMapping("delete")
+    public AjaxJson delete(Long id) {
+        tbGoodsDemandService.delete(id);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 删 - 根据id列表
+     */
+    @RequestMapping("deleteByIds")
+    public AjaxJson deleteByIds() {
+        List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
+        int line = SP.publicMapper.deleteByIds(TbGoodsDemand.TABLE_NAME, ids);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 改
+     */
+    @RequestMapping("update")
+    public AjaxJson update(TbGoodsDemand t) {
+        tbGoodsDemandService.update(t);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 查 - 根据id
+     */
+    @RequestMapping("getById")
+    public AjaxJson getById(Long id) {
+        TbGoodsDemand t = tbGoodsDemandService.getById(id);
+        return AjaxJson.getSuccessData(t);
+    }
+
+    /**
+     * app端:专供给一级市场查看的需求列表
+     */
+    @RequestMapping("getAppList")
+    public AjaxJson getAppList() {
+        SoMap so = SoMap.getRequestSoMap();
+        List<TbGoodsDemand> list = tbGoodsDemandService.getAppList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+    /**
+     * app端:二级收购商查看需求发布列表(包括报价信息)
+     */
+    @RequestMapping("goodsDemandDetail")
+    public AjaxJson goodsDemandDetail() {
+        SoMap so = SoMap.getRequestSoMap();
+        GoodsDemandVo goodsDemandVos = tbGoodsDemandService.goodsDemandList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), goodsDemandVos);
+    }
+
+    /**
+     * app端:  二级市场收购商处理已被报价的需求
+     *
+     * @param disposeStatus     商家处理状态,只能是1或者2,其他值会抛异常 , 1=同意,2=拒绝
+     * @param goodsDemandId     需求表主键
+     * @param demandQuotationId 报价表主键
+     * @param purchaserRemark   商家的备注,非必填
+     * @return true/false
+     */
+    @RequestMapping("disposeOrders")
+    public AjaxJson disposeOrders(@RequestParam(value = "disposeStatus") Integer disposeStatus, @RequestParam("goodsDemandId") Long goodsDemandId, @RequestParam("demandQuotationId") Long demandQuotationId, @RequestParam(value = "purchaserRemark", required = false) String purchaserRemark) {
+        boolean disposed = tbGoodsDemandService.disposeOrders(disposeStatus, goodsDemandId, demandQuotationId, purchaserRemark);
+        if (disposed) return AjaxJson.getSuccess("处理报价结果成功!");
+        return AjaxJson.getError("处理报价结果失败!");
+    }
+
+    /** 收购商拒绝接单,即收购商拒绝组长的报价,不生成二级市场订单 ,恢复发布需求的状态*/
+    @RequestMapping("refuse")
+    public AjaxJson refuse(TbGoodsDemand t) {
+        return AjaxJson.toAjax(tbGoodsDemandService.refuse(t));
+    }
 
 }

+ 47 - 18
sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/MethodGoodsDemandService.java

@@ -1,15 +1,13 @@
 package com.pj.tb_goods_demand;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.pj.api.client.level_one_server.LevelOneServerInterface;
 import com.pj.api.dto.GoodsDto;
-import com.pj.api.dto.PeopleDto;
+import com.pj.api.dto.OrderDto;
+import com.pj.common.core.exception.ServiceException;
 import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.enummj.DeleteStatus;
-import com.pj.retry.SmsRetryService;
 import com.pj.tb_demand_quotation.TbDemandQuotation;
 import com.pj.tb_demand_quotation.TbDemandQuotationMapper;
-import com.pj.tb_demand_quotation.TbDemandQuotationService;
 import com.pj.tb_goods_demand.vo.GoodsDemandVo;
 import com.pj.tb_orders.TbOrders;
 import com.pj.tb_orders.TbOrdersMapper;
@@ -54,25 +52,49 @@ public class MethodGoodsDemandService {
 
             //获取需求表ID
             Long id = item.getId();
+            so.delete("id");
             //查询报价表
             so.put("demandId",id);
+            //报价结果[0=待确认,1=确认,2=拒绝]
+            so.put("quotationResult",1);
             so.put("deleteStatus",DeleteStatus.DELETE_STATUS_ON.getCode());
             List<TbDemandQuotation> tbDemandQuotations = tbDemandQuotationMapper.getList(so);
-            if(tbDemandQuotations.size() == 0)return;
-            //查询商品基本信息
-            TbDemandQuotation tbDemandQuotation = tbDemandQuotations.get(0);
-            GoodsDto goodsDto = levelOneServerInterface.getByGoodsId(item.getLevelOneGoodsId());
+
             //开始封装数据
             GoodsDemandVo goodsDemandVo = new GoodsDemandVo();
+
+            //查询商品基本信息
+            //GoodsDto goodsDto = levelOneServerInterface.getByGoodsId(item.getLevelOneGoodsId());
+            // TODO: 2023/8/8 获取商品图片暂时不需要
+            //goodsDemandVo.setGoodsImg(goodsDto.getAvatar());
+
+            // 获取发布需求的详细信息
             goodsDemandVo.setGoodsDemandId(id);
-            goodsDemandVo.setDemandQuotationId(tbDemandQuotation.getId());
-            goodsDemandVo.setGoodsImg(goodsDto.getAvatar());
-            goodsDemandVo.setGoodsName(goodsDto.getName());
-            goodsDemandVo.setGroupName(item.getGoodsName());
-            goodsDemandVo.setCreateName(tbDemandQuotation.getCreateName());
-            goodsDemandVo.setCreateTime(tbDemandQuotation.getCreateTime());
-            goodsDemandVo.setQuotation(tbDemandQuotation.getQuotation());
-            goodsDemandVo.setRemark(tbDemandQuotation.getRemark());
+            goodsDemandVo.setGoodsQuantity(item.getGoodsQuantity());
+            goodsDemandVo.setGoodsDemandTime(item.getCreateTime());
+            goodsDemandVo.setGoodsName(item.getGoodsName());
+            goodsDemandVo.setIsOrders(item.getIsOrders());
+            goodsDemandVo.setLevelOneGoodsId(item.getLevelOneGoodsId());
+            goodsDemandVo.setAddressName(item.getAddressName());
+            goodsDemandVo.setPhone(item.getPhone());
+            goodsDemandVo.setName(item.getName());
+            goodsDemandVo.setIsConfirm(item.getIsConfirm());
+            goodsDemandVo.setTradeAreaId(item.getTradeAreaId());
+            goodsDemandVo.setTradeAreaName(item.getTradeAreaName());
+            goodsDemandVo.setIsRelease(item.getIsRelease());
+
+            // 获取已确认的报价信息
+            if(tbDemandQuotations.size() > 0) {
+                TbDemandQuotation tbDemandQuotation = tbDemandQuotations.get(0);
+                goodsDemandVo.setDemandQuotationId(tbDemandQuotation.getId());
+                goodsDemandVo.setCreateTime(tbDemandQuotation.getCreateTime());
+                goodsDemandVo.setQuotation(tbDemandQuotation.getQuotation());
+                goodsDemandVo.setRemark(tbDemandQuotation.getRemark());
+                goodsDemandVo.setGroupName(tbDemandQuotation.getGroupName());
+                goodsDemandVo.setLeaderId(tbDemandQuotation.getLeaderId());
+                goodsDemandVo.setCreateName(tbDemandQuotation.getCreateName());
+            }
+
             //执行添加
             resultList.add(goodsDemandVo);
 
@@ -101,17 +123,24 @@ public class MethodGoodsDemandService {
         int updateById = tbDemandQuotationMapper.updateById(tbDemandQuotation);
         //处理商家同意后的逻辑
         if(updateById == 1){
+
+            //关联一级市场订单表 根据创建时间 和 appUserID 进行查询
+            List<OrderDto> orderDtos = levelOneServerInterface.selectOrderList(new Date(), appLoginUserInfo.getLoginId());
+            if(orderDtos.size() != 1)throw new RuntimeException("一级市场暂未接单!");
             //开始创建订单
             TbOrders tbOrders = new TbOrders();
+            //一级市场关联二级市场
+            tbOrders.setLevelOneOrderId(orderDtos.get(0).getId());
             //设置订单基本属性
             tbOrders.setGoodsId(tbGoodsDemand.getLevelOneGoodsId()); //一级市场海关允许销售商品表ID
             tbOrders.setGoodsName(tbGoodsDemand.getGoodsName());
-//            tbOrders.setGoodsFrom();  //产地
+            GoodsDto byGoodsId = levelOneServerInterface.getByGoodsId(tbGoodsDemand.getLevelOneGoodsId());
+            if(byGoodsId != null)tbOrders.setGoodsFrom(byGoodsId.getSource());//产地
             tbOrders.setShipperPhone(tbDemandQuotation.getLinkPhone()); //联系电话
             tbOrders.setShipperName(tbDemandQuotation.getCreateName()); //卖家名称
             tbOrders.setTradeAreaId(tbDemandQuotation.getTradeAreaId()); //交易地区ID
             tbOrders.setTradeAreaName(tbDemandQuotation.getTradeAreaName());  //交易地区名称
-            tbOrders.setCreateBy(tbDemandQuotation.getLeaderId()); // 订单创建人 -- 边民表主键
+            tbOrders.setCreateBy(appLoginUserInfo.getLoginId()); // 订单创建人 -- appUser表主键
             tbOrders.setPurchaserId(tbGoodsDemand.getPurchaserId());  //买家ID  商户表
             tbOrders.setPurchaserName(tbGoodsDemand.getPurchaserName()); // 买家名称 商户表
             tbOrders.setCreateName(tbDemandQuotation.getCreateName());

+ 99 - 26
sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/TbGoodsDemand.java

@@ -10,10 +10,11 @@ import lombok.EqualsAndHashCode;
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * Model: tb_goods_demand -- 二级收购商需求发布表
- * @author yzs 
+ * @author yzs
  */
 @Data
 @Accessors(chain = true)
@@ -23,15 +24,15 @@ public class TbGoodsDemand extends Model<TbGoodsDemand> implements Serializable
 
 	// ---------- 模块常量 ----------
 	/**
-	 * 序列化版本id 
+	 * 序列化版本id
 	 */
-	private static final long serialVersionUID = 1L;	
+	private static final long serialVersionUID = 1L;
 	/**
-	 * 此模块对应的表名 
+	 * 此模块对应的表名
 	 */
-	public static final String TABLE_NAME = "tb_goods_demand";	
+	public static final String TABLE_NAME = "tb_goods_demand";
 	/**
-	 * 此模块对应的权限码 
+	 * 此模块对应的权限码
 	 */
 	public static final String PERMISSION_CODE = "tb-goods-demand";
 	public static final String PERMISSION_CODE_ADD = "tb-goods-demand-add";
@@ -43,67 +44,139 @@ public class TbGoodsDemand extends Model<TbGoodsDemand> implements Serializable
 
 	// ---------- 表中字段 ----------
 	/**
-	 * 二级市场商家需求发布表主键ID 
+	 * 二级市场商家需求发布表主键ID
 	 */
 	@TableId(type = IdType.AUTO)
-	private Long id;	
+	private Long id;
 
 	/**
-	 * 一级市场海关允许售卖商品ID 
+	 * 一级市场海关允许售卖商品ID
 	 */
-	private Long levelOneGoodsId;	
+	private Long levelOneGoodsId;
 
 	/**
-	 * 商品名称 
+	 * 商品名称
 	 */
-	private String goodsName;	
+	private String goodsName;
 
 	/**
-	 * 商品图片 
+	 * 商品图片
 	 */
-	private String goodsImg;	
+	private String goodsImg;
 
 	/**
-	 * 二级市场商家ID 
+	 * 二级市场商家ID
 	 */
-	private Long purchaserId;	
+	private Long purchaserId;
 
 	/**
-	 * 商家名称 
+	 * 商家名称
 	 */
-	private String purchaserName;	
+	private String purchaserName;
 
 	/**
-	 * 已被接单 
+	 * 已被接单
 	 */
 	private Integer isOrders;
 
 	/**
-	 * 商品量(根据海关允许发布表的计量单位决定,例如:柜,KG,吨) 
+	 * 商品量(根据海关允许发布表的计量单位决定,例如:柜,KG,吨)
 	 */
-	private String goodsQuantity;	
+	private String goodsQuantity;
 
 	/**
-	 * 商家备注 
+	 * 商家备注
 	 */
-	private String remark;	
+	private String remark;
 
 	/**
-	 * 创建时间 
+	 * 创建人编号
+	 */
+	private Long createBy;
+
+	/**
+	 * 创建人名称
+	 */
+	private String createName;
+
+	/**
+	 * 创建时间
 	 */
 	@JsonFormat(pattern = "yyyy-MM-dd")
 	private Date createTime;
 
 	/**
-	 * 删除状态 
+	 * 更新时间
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date updateTime;
+
+	/**
+	 * 到货时间
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	private Date arrivalTime;
+
+
+	/**
+	 * 更新人编号
+	 */
+	private Long updateBy;
+
+	/**
+	 * 更新人名称
+	 */
+	private String updateName;
+
+	/**
+	 * 计价单位
+	 */
+	private String goodsUnit;
+
+	/**
+	 * 商品编号
+	 */
+	private String goodsNo;
+
+	/**
+	 * 删除状态
 	 */
 	private Integer deleteStatus;
 
+	/**
+	 * 互市区ID
+	 */
+	private Long tradeAreaId;
 
+	/**
+	 * 互市区名称
+	 */
+	private String tradeAreaName;
 
+	/**
+	 * 是否发布
+	 */
+	private Integer isRelease;
 
+	/**
+	 * 收件地址
+	 */
+	private String addressName;
+
+	/**
+	 * 联系电话
+	 */
+	private String phone;
 
-	
+	/**
+	 * 收件人姓名
+	 */
+	private String name;
 
+	/**
+	 * 收购商是否确认:0=未确认,1=已确认
+	 */
+	private Integer isConfirm;
 
 }

+ 30 - 23
sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/TbGoodsDemandMapper.xml

@@ -7,17 +7,17 @@
 
 	<!-- ================================== 查询相关 ================================== -->
 	<!-- select id, level_one_goods_id, goods_name, goods_img, purchaser_id, purchaser_name, is_orders, goods_quantity, remark, create_time, delete_status from tb_goods_demand  -->
-	
+
 	<!-- 通用映射:自动模式 -->
 	<resultMap id="model" autoMapping="true" type="com.pj.tb_goods_demand.TbGoodsDemand"></resultMap>
-	
+
 	<!-- 公共查询sql片段 -->
 	<sql id="select_sql">
-		select * 
-		from tb_goods_demand 
+		select *
+		from tb_goods_demand
 	</sql>
 
-	
+
 	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
 	<select id="getList" resultMap="model">
 		<include refid="select_sql"></include>
@@ -25,39 +25,46 @@
 			<if test=' this.has("id") '> and id = #{id} </if>
 			<if test=' this.has("levelOneGoodsId") '> and level_one_goods_id = #{levelOneGoodsId} </if>
 			<if test=' this.has("goodsName") '> and goods_name = #{goodsName} </if>
+			<if test=' this.has("goodsNo") '> and goods_no = #{goodsNo} </if>
 			<if test=' this.has("goodsImg") '> and goods_img = #{goodsImg} </if>
 			<if test=' this.has("purchaserId") '> and purchaser_id = #{purchaserId} </if>
 			<if test=' this.has("purchaserName") '> and purchaser_name = #{purchaserName} </if>
 			<if test=' this.has("isOrders") '> and is_orders = #{isOrders} </if>
+			<if test=' this.has("isRelease") '> and is_release = #{isRelease} </if>
 			<if test=' this.has("goodsQuantity") '> and goods_quantity = #{goodsQuantity} </if>
 			<if test=' this.has("remark") '> and remark = #{remark} </if>
 			<if test=' this.has("createTime") '> and create_time = #{createTime} </if>
 			<if test=' this.has("deleteStatus") '> and delete_status = #{deleteStatus} </if>
+			<if test=' this.has("isConfirm") '> and is_confirm = #{isConfirm} </if>
 		</where>
 		order by
 		<choose>
 			<when test='sortType == 1'> id desc </when>
 			<when test='sortType == 2'> level_one_goods_id desc </when>
-			<when test='sortType == 3'> goods_name desc </when>
-			<when test='sortType == 4'> goods_img desc </when>
-			<when test='sortType == 5'> purchaser_id desc </when>
-			<when test='sortType == 6'> purchaser_name desc </when>
-			<when test='sortType == 7'> is_orders desc </when>
-			<when test='sortType == 8'> goods_quantity desc </when>
-			<when test='sortType == 9'> remark desc </when>
-			<when test='sortType == 10'> create_time desc </when>
-			<when test='sortType == 11'> delete_status desc </when>
+			<when test='sortType == 3'> address_id desc </when>
+			<when test='sortType == 4'> goods_name desc </when>
+			<when test='sortType == 5'> goods_img desc </when>
+			<when test='sortType == 6'> purchaser_id desc </when>
+			<when test='sortType == 7'> purchaser_name desc </when>
+			<when test='sortType == 8'> is_orders desc </when>
+			<when test='sortType == 9'> is_release desc </when>
+			<when test='sortType == 10'> goods_quantity desc </when>
+			<when test='sortType == 11'> remark desc </when>
+			<when test='sortType == 12'> create_time desc </when>
+			<when test='sortType == 13'> delete_status desc </when>
+			<when test='sortType == 14'> trade_area_id desc </when>
+			<when test='sortType == 15'> trade_area_name desc </when>
 			<otherwise> id desc </otherwise>
 		</choose>
 	</select>
-	
-	
-	
-	
-	
-	
-	
-	
-	
+
+
+
+
+
+
+
+
+
 
 </mapper>

+ 62 - 23
sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/TbGoodsDemandService.java

@@ -1,12 +1,17 @@
 package com.pj.tb_goods_demand;
 
+import java.util.Date;
 import java.util.List;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.pj.common.core.exception.ServiceException;
 import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.enummj.DeleteStatus;
+import com.pj.enummj.OrderStatus;
+import com.pj.enummj.ReleaseStatus;
+import com.pj.tb_demand_quotation.TbDemandQuotation;
+import com.pj.tb_demand_quotation.TbDemandQuotationService;
 import com.pj.tb_goods_demand.vo.GoodsDemandVo;
 import com.pj.utils.so.SoMap;
 import org.apache.commons.lang3.StringUtils;
@@ -19,7 +24,7 @@ import com.pj.utils.sg.*;
 
 /**
  * Service: tb_goods_demand -- 二级收购商需求发布表
- * @author yzs 
+ * @author yzs
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
@@ -28,12 +33,25 @@ public class TbGoodsDemandService extends ServiceImpl<TbGoodsDemandMapper, TbGoo
 	/** 底层 Mapper 对象 */
 	@Autowired
 	TbGoodsDemandMapper tbGoodsDemandMapper;
+	@Autowired
+	private TbDemandQuotationService demandQuotationService;
 
 	@Autowired
 	private MethodGoodsDemandService methodGoodsDemandService;
 
-	/**  */
+	/** 二级市场收购商发布需求 */
 	void add(TbGoodsDemand t){
+		//获取并判断当前登陆人
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
+			throw new ServiceException("当前登录账号信息已失效!");
+		//设置基本状态
+		t.setIsOrders(0); // 0= 未被下单
+		t.setPurchaserId(appLoginInfo.getFk());
+		t.setCreateBy(appLoginInfo.getLoginId());
+		t.setCreateName(appLoginInfo.getLoginName());
+		t.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode());
+		t.setCreateTime(new Date());
 		save(t);
 	}
 
@@ -44,6 +62,14 @@ public class TbGoodsDemandService extends ServiceImpl<TbGoodsDemandMapper, TbGoo
 
 	/** 改 */
 	void update(TbGoodsDemand t){
+		//获取并判断当前登陆人
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
+			throw new ServiceException("当前登录账号信息已失效!");
+		//执行修改
+		t.setUpdateBy(appLoginInfo.getLoginId());
+		t.setUpdateName(appLoginInfo.getLoginName());
+		t.setUpdateTime(new Date());
 		updateById(t);
 
 	}
@@ -58,32 +84,31 @@ public class TbGoodsDemandService extends ServiceImpl<TbGoodsDemandMapper, TbGoo
 		return tbGoodsDemandMapper.getList(so);
 	}
 
-	/** app端:专供给一级市场查看的需求列表 */
-	List<TbGoodsDemand> getAppList(SoMap so,Integer isOrders) {
-		so.set("is_orders",isOrders);
-		so.set("sortType",10); //根据日期降序
-		so.set("delete_status", DeleteStatus.DELETE_STATUS_ON.getCode()); // 状态可用
-		return tbGoodsDemandMapper.getList(so);	
-	}
-
-	/**
-	 * 二级收购商查看当前已被报价的需求列表
-	 * @param isOrders
-	 * @return
-	 */
-	public List<GoodsDemandVo> goodsDemandList(SoMap so,Integer isOrders){
+	/** app端:专供给二级市场查看的需求列表 */
+	List<TbGoodsDemand> getAppList(SoMap so) {
 		//获取并判断当前登陆人
 		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
 		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
 			throw new ServiceException("当前登录账号信息已失效!");
-		//匹配已被报价的列表
+		//获取当前收购商发布的需求
 		so.put("purchaserId",appLoginInfo.getFk());
-		if(isOrders != null) so.put("isOrders",isOrders);
+		so.put("sortType",10); //根据创建日期降序
+		so.put("deleteStatus", DeleteStatus.DELETE_STATUS_ON.getCode()); // 状态可用
+		return tbGoodsDemandMapper.getList(so);
+	}
+
+	/**
+	 * 二级收购商查看需求发布列表(包括报价信息)
+	 * @return
+	 */
+	public GoodsDemandVo goodsDemandList(SoMap so){
 		so.put("deleteStatus",DeleteStatus.DELETE_STATUS_ON.getCode());
 		List<TbGoodsDemand> goodsDemandMapperList = tbGoodsDemandMapper.getList(so);
-		if(goodsDemandMapperList.size() != 0){
+
+		//匹配已被报价的列表
+		if(goodsDemandMapperList.size() > 0){
 			List<GoodsDemandVo> goodsDemandVos = methodGoodsDemandService.setGoodsDemandVo(goodsDemandMapperList,so);
-			return goodsDemandVos;
+			if(goodsDemandVos.size() > 0) return goodsDemandVos.get(0);
 		}
 		return null;
 	}
@@ -97,8 +122,8 @@ public class TbGoodsDemandService extends ServiceImpl<TbGoodsDemandMapper, TbGoo
 	public boolean disposeOrders(Integer disposeStatus,Long goodsDemandId,Long demandQuotationId,String purchaserRemark)  {
 		//获取并判断当前登陆人
 		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
-			throw new ServiceException("当前登录账号信息已失效!");
+		if(appLoginInfo == null || appLoginInfo.getLoginId() == null) throw new ServiceException("当前登录账号信息已失效!");
+
 		//同意则开始创建订单,不同意则修改报价表和需求表状态
 		if(disposeStatus == 1){
 			return methodGoodsDemandService.agreeQuotation(appLoginInfo,goodsDemandId,demandQuotationId,purchaserRemark);
@@ -108,4 +133,18 @@ public class TbGoodsDemandService extends ServiceImpl<TbGoodsDemandMapper, TbGoo
 		throw new RuntimeException("服务器繁忙~");
 	}
 
+	boolean refuse(TbGoodsDemand t) {
+		t.setIsOrders(OrderStatus.ORDER_STATUS_ZERO.getCode());//未被接单
+		t.setIsRelease(ReleaseStatus.RELEASE_STATUS_PUBLISH.getCode());//已发布
+		t.setIsConfirm(0);//收购商未确认
+		update(t);
+
+		LambdaUpdateWrapper<TbDemandQuotation> wrapper = new LambdaUpdateWrapper<>();
+		//报价结果[0=待确认,1=确认,2=拒绝]
+		wrapper.set(TbDemandQuotation::getQuotationResult, 2);
+		wrapper.eq(TbDemandQuotation::getDemandId, t.getId());
+		boolean update = demandQuotationService.update(wrapper);
+
+		return update;
+	}
 }

+ 65 - 6
sp-service/level-two-server/src/main/java/com/pj/tb_goods_demand/vo/GoodsDemandVo.java

@@ -23,10 +23,7 @@ public class GoodsDemandVo {
      */
     private Long demandQuotationId;
 
-    /**
-     * 边民组ID
-     */
-    private Long groupId;
+
 
     /**
      * 商品名称
@@ -38,11 +35,19 @@ public class GoodsDemandVo {
      */
     private String goodsImg;
     /**
-     *  报价的组名
+     * 组Id
+     */
+    private Long groupId;
+    /**
+     *  组名
      */
     private String groupName;
     /**
-     * 报价的组长名
+     * 组长Id
+     */
+    private Long leaderId;
+    /**
+     * 组长名
      */
     private String createName;
     /**
@@ -58,4 +63,58 @@ public class GoodsDemandVo {
      */
     private String remark;
 
+    /**
+     * 是否被接单[0=待接单,1=已被接单]
+     */
+    private Integer isOrders;
+
+    /**
+     * 商品量(根据海关允许发布表的计量单位决定,例如:柜,KG,吨)
+     */
+    private String goodsQuantity;
+
+    /**
+     * 商品发布时间
+     */
+    private Date goodsDemandTime;
+
+    /**
+     * 一级市场海关允许售卖商品ID
+     */
+    private Long levelOneGoodsId;
+
+    /**
+     * 收件地址
+     */
+    private String addressName;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 收件人姓名
+     */
+    private String name;
+
+    /**
+     * 收购商是否确认:0=未确认,1=已确认
+     */
+    private Integer isConfirm;
+
+    /**
+     * 是否发布
+     */
+    private Integer isRelease;
+
+    /**
+     * 贸易区域id
+     */
+    private Long tradeAreaId;
+
+    /**
+     * 贸易区域名称
+     */
+    private String tradeAreaName;
 }

+ 69 - 0
sp-service/level-two-server/src/main/java/com/pj/tb_orders/MethodOrdersService.java

@@ -0,0 +1,69 @@
+package com.pj.tb_orders;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.pj.tb_demand_quotation.TbDemandQuotation;
+import com.pj.tb_demand_quotation.TbDemandQuotationService;
+import com.pj.tb_goods_demand.TbGoodsDemand;
+import com.pj.tb_goods_demand.TbGoodsDemandService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 二级市场订单-抽取方法公共类
+ * @Author lbl
+ * @Date 2023 08 09
+ **/
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class MethodOrdersService {
+    @Autowired
+    private TbGoodsDemandService goodsDemandService;
+    @Autowired
+    private TbDemandQuotationService demandQuotationService;
+
+    // 公共方法:TbOrders数据封装成TbOrdersDto
+    List<TbOrdersDto> getTbOrdersDto(List<TbOrders> orderList) {
+
+        List<TbOrdersDto> ordersDtoList = new ArrayList<>();
+
+        orderList.forEach(order -> {
+            TbOrdersDto ordersDto = new TbOrdersDto();
+            BeanUtils.copyProperties(order,ordersDto);
+
+
+            // 需求表主键Id
+            Long goodsDemandId = ordersDto.getFkGoodsDemandId();
+            // 获取订单关联的需求表信息
+            TbGoodsDemand goodsDemand = goodsDemandService.getById(goodsDemandId);
+            ordersDto.setGoodsImg(goodsDemand.getGoodsImg());
+            ordersDto.setGoodsQuantity(goodsDemand.getGoodsQuantity());
+            ordersDto.setRemark(goodsDemand.getRemark());
+            ordersDto.setGoodsUnit(goodsDemand.getGoodsUnit());
+            ordersDto.setGoodsNo(goodsDemand.getGoodsNo());
+            ordersDto.setGoodsQuantity(goodsDemand.getGoodsQuantity());
+            ordersDto.setAcquirerName(goodsDemand.getCreateName());
+            ordersDto.setGoodsDemandTime(goodsDemand.getCreateTime());
+
+
+            // 根据需求表主键Id,获取报价表信息
+            LambdaQueryWrapper<TbDemandQuotation> wrapper = new LambdaQueryWrapper();
+            wrapper.eq(TbDemandQuotation::getDemandId, goodsDemandId);
+            wrapper.eq(TbDemandQuotation::getQuotationResult, 1);
+            TbDemandQuotation demandQuotation = demandQuotationService.getOne(wrapper);
+            // 商品报价
+            ordersDto.setQuotation(demandQuotation.getQuotation());
+            // 商品报价人
+            ordersDto.setQuotationPerson(demandQuotation.getCreateName());
+
+
+            ordersDtoList.add(ordersDto);
+        });
+
+        return ordersDtoList;
+    }
+}

+ 18 - 9
sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrders.java

@@ -150,12 +150,11 @@ public class TbOrders extends Model<TbOrders> implements Serializable {
 	@JsonFormat(pattern = "yyyy-MM-dd")
 	private Date updateTime;
 
+
 	/**
-	 * 创建时间
+	 * 更新人编号
 	 */
-	@JsonFormat(pattern = "yyyy-MM-dd")
-	private Date createTime;
-
+	private Long updateBy;
 	/**
 	 * 更新人名称
 	 */
@@ -167,9 +166,10 @@ public class TbOrders extends Model<TbOrders> implements Serializable {
 	private Integer deleteStatus;
 
 	/**
-	 * 更新人编号
+	 * 创建时间
 	 */
-	private Long updateBy;
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date createTime;
 
 	/**
 	 * 创建人编号
@@ -201,10 +201,19 @@ public class TbOrders extends Model<TbOrders> implements Serializable {
 	 */
 	private String purchaserName;
 
+	/**
+	 * 组长Id
+	 */
+	private Long leaderId;
 
+	/**
+	 * 二级收购商需求发布表的主键id
+	 */
+	private Long fkGoodsDemandId;
 
-
-
-
+	/**
+	 * 是否收货[0=未收货,1=已收货]
+	 */
+	private Integer isDelivery;
 
 }

+ 31 - 16
sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrdersApiController.java

@@ -2,6 +2,7 @@ package com.pj.tb_orders;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.pj.project4sp.SP;
+import com.pj.tb_goods_demand.vo.GoodsDemandVo;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
 import java.util.List;
 
 
@@ -23,14 +25,13 @@ public class TbOrdersApiController {
 	/** 底层 Service 对象 */
 	@Autowired
 	TbOrdersService tbOrdersService;
+	@Autowired
+	private MethodOrdersService methodOrdersService;
 
 	/** 增 */
 	@RequestMapping("add")
-//	@SaCheckPermission(TbOrders.PERMISSION_CODE_ADD)
-	public AjaxJson add(TbOrders t){
-		tbOrdersService.add(t);
-		t = tbOrdersService.getById(SP.publicMapper.getPrimarykey());
-		return AjaxJson.getSuccessData(t);
+	public AjaxJson add(GoodsDemandVo t){
+		return AjaxJson.toAjax(tbOrdersService.addByDetail(t));
 	}
 
 	/** 删 */
@@ -59,23 +60,27 @@ public class TbOrdersApiController {
 	}
 
 
-	/** 二级市场收购商查二级市场订单集合 - 根据条件(参数为空时代表忽略指定条件) */
-	@RequestMapping("getList")
-//		@SaCheckPermission(TbOrders.PERMISSION_CODE)
-	public AjaxJson getList(@RequestParam(value = "keyword",required = false)String keyword) {
+	/** 二级市场订单 组长角色入口*/
+	@RequestMapping("getLeaderOrderList")
+	public AjaxJson getLeaderOrderList() {
 		SoMap so = SoMap.getRequestSoMap();
-		List<TbOrders> list = tbOrdersService.getList(so.startPage(),keyword);
+		List<TbOrdersDto> list = tbOrdersService.getLeaderOrderList(so.startPage());
 		return AjaxJson.getPageData(so.getDataCount(), list);
 	}
 
+	/** 二级市场订单 收购商角色入口*/
+	@RequestMapping("getPurchaserOrderList")
+	public AjaxJson getPurchaserOrderList() {
+		SoMap so = SoMap.getRequestSoMap();
+		List<TbOrdersDto> list = tbOrdersService.getPurchaserOrderList(so.startPage());
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
 
 
-	/** 改 - 订单完成状态 (0=未完成,1=已完成) */
-	@RequestMapping("updateOrderFinish")
-//	@SaCheckPermission(TbOrders.PERMISSION_CODE_EDIT)
-	public AjaxJson updateOrderFinish(Long id, Integer value){
-		int line = SP.publicMapper.updateColumnById(TbOrders.TABLE_NAME, "order_finish", value, id);
-		return AjaxJson.getByLine(line);
+	/** 改 - 收购商确认收货 */
+	@RequestMapping("toDelivery")
+	public AjaxJson toDelivery(TbOrders t){
+		return AjaxJson.toAjax(tbOrdersService.updateById(t));
 	}
 
 	/** 改 - 删除状态(0=禁用,1=启用) */
@@ -95,7 +100,17 @@ public class TbOrdersApiController {
 		return AjaxJson.getSuccessData(orders);
 	}
 
+	/** 查 根据订单Id查订单详情 */
+	@RequestMapping("getDetailById")
+	public AjaxJson getDetailById(Long id) {
+		TbOrders t = tbOrdersService.getById(id);
 
+		List<TbOrders> OrderList = new ArrayList<>();
+		OrderList.add(t);
+		List<TbOrdersDto> tbOrdersDto = methodOrdersService.getTbOrdersDto(OrderList);
+		if(tbOrdersDto.size() > 0) return AjaxJson.getSuccessData(tbOrdersDto.get((0)));
+		return AjaxJson.getError();
+	}
 
 
 }

+ 62 - 223
sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrdersDto.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
@@ -16,6 +17,8 @@ import java.util.Date;
  * Model: tb_orders -- 订单表
  * @author lbl
  */
+@Data
+@NoArgsConstructor
 public class TbOrdersDto {
 
 	// ---------- 表中字段 ----------
@@ -45,6 +48,31 @@ public class TbOrdersDto {
 	private String goodsName;
 
 	/**
+	 * 商品图片
+	 */
+	private String goodsImg;
+
+	/**
+	 * 商品量(根据海关允许发布表的计量单位决定,例如:柜,KG,吨)
+	 */
+	private String goodsQuantity;
+
+	/**
+	 * 商家备注
+	 */
+	private String remark;
+
+	/**
+	 * 计价单位
+	 */
+	private String goodsUnit;
+
+	/**
+	 * 商品编号
+	 */
+	private String goodsNo;
+
+	/**
 	 * 商品来源(国家)
 	 */
 	private String goodsFrom;
@@ -105,6 +133,11 @@ public class TbOrdersDto {
 	private Integer orderFinish;
 
 	/**
+	 * 是否收货[0=未收货,1=已收货]
+	 */
+	private Integer isDelivery;
+
+	/**
 	 * 装货地址
 	 */
 	private String loadingAddress;
@@ -166,235 +199,41 @@ public class TbOrdersDto {
 	 */
 	private String tradeAreaName;
 
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public Long getLevelOneOrderId() {
-		return levelOneOrderId;
-	}
-
-	public void setLevelOneOrderId(Long levelOneOrderId) {
-		this.levelOneOrderId = levelOneOrderId;
-	}
-
-	public String getOrderNo() {
-		return orderNo;
-	}
-
-	public void setOrderNo(String orderNo) {
-		this.orderNo = orderNo;
-	}
-
-	public Long getGoodsId() {
-		return goodsId;
-	}
-
-	public void setGoodsId(Long goodsId) {
-		this.goodsId = goodsId;
-	}
-
-	public String getGoodsName() {
-		return goodsName;
-	}
-
-	public void setGoodsName(String goodsName) {
-		this.goodsName = goodsName;
-	}
-
-	public String getGoodsFrom() {
-		return goodsFrom;
-	}
-
-	public void setGoodsFrom(String goodsFrom) {
-		this.goodsFrom = goodsFrom;
-	}
-
-	public String getShipperPhone() {
-		return shipperPhone;
-	}
-
-	public void setShipperPhone(String shipperPhone) {
-		this.shipperPhone = shipperPhone;
-	}
-
-	public String getShipperName() {
-		return shipperName;
-	}
-
-	public void setShipperName(String shipperName) {
-		this.shipperName = shipperName;
-	}
-
-	public Long getDriverId() {
-		return driverId;
-	}
-
-	public void setDriverId(Long driverId) {
-		this.driverId = driverId;
-	}
-
-	public String getDriverName() {
-		return driverName;
-	}
-
-	public void setDriverName(String driverName) {
-		this.driverName = driverName;
-	}
-
-	public String getDriverPhone() {
-		return driverPhone;
-	}
-
-	public void setDriverPhone(String driverPhone) {
-		this.driverPhone = driverPhone;
-	}
-
-	public Long getCarId() {
-		return carId;
-	}
-
-	public void setCarId(Long carId) {
-		this.carId = carId;
-	}
-
-	public String getCarType() {
-		return carType;
-	}
-
-	public void setCarType(String carType) {
-		this.carType = carType;
-	}
-
-	public String getConsigneeName() {
-		return consigneeName;
-	}
-
-	public void setConsigneeName(String consigneeName) {
-		this.consigneeName = consigneeName;
-	}
-
-	public String getConsigneePhone() {
-		return consigneePhone;
-	}
-
-	public void setConsigneePhone(String consigneePhone) {
-		this.consigneePhone = consigneePhone;
-	}
-
-	public String getDeclarationNumber() {
-		return declarationNumber;
-	}
-
-	public void setDeclarationNumber(String declarationNumber) {
-		this.declarationNumber = declarationNumber;
-	}
-
-	public Integer getOrderFinish() {
-		return orderFinish;
-	}
-
-	public void setOrderFinish(Integer orderFinish) {
-		this.orderFinish = orderFinish;
-	}
-
-	public String getLoadingAddress() {
-		return loadingAddress;
-	}
-
-	public void setLoadingAddress(String loadingAddress) {
-		this.loadingAddress = loadingAddress;
-	}
-
-	public String getUnloadingAddress() {
-		return unloadingAddress;
-	}
-
-	public void setUnloadingAddress(String unloadingAddress) {
-		this.unloadingAddress = unloadingAddress;
-	}
-
-	public String getComment() {
-		return comment;
-	}
-
-	public void setComment(String comment) {
-		this.comment = comment;
-	}
-
-	public Date getUpdateTime() {
-		return updateTime;
-	}
-
-	public void setUpdateTime(Date updateTime) {
-		this.updateTime = updateTime;
-	}
-
-	public Date getCreateTime() {
-		return createTime;
-	}
-
-	public void setCreateTime(Date createTime) {
-		this.createTime = createTime;
-	}
-
-	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 getUpdateBy() {
-		return updateBy;
-	}
-
-	public void setUpdateBy(Long updateBy) {
-		this.updateBy = updateBy;
-	}
+	/**
+	 * 组长Id
+	 */
+	private Long leaderId;
 
-	public Long getCreateBy() {
-		return createBy;
-	}
+	/**
+	 * 二级收购商需求发布表的主键id
+	 */
+	private Long fkGoodsDemandId;
 
-	public void setCreateBy(Long createBy) {
-		this.createBy = createBy;
-	}
+	/**
+	 * 收购商Id
+	 */
+	private String AcquirerId;
 
-	public String getCreateName() {
-		return createName;
-	}
+	/**
+	 * 收购商名称
+	 */
+	private String AcquirerName;
 
-	public void setCreateName(String createName) {
-		this.createName = createName;
-	}
+	/**
+	 * 报价(CNY)
+	 */
+	private Double quotation;
 
-	public Long getTradeAreaId() {
-		return tradeAreaId;
-	}
+	/**
+	 * 报价人(组长)
+	 */
+	private String quotationPerson;
 
-	public void setTradeAreaId(Long tradeAreaId) {
-		this.tradeAreaId = tradeAreaId;
-	}
+	/**
+	 * 发布时间
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date goodsDemandTime;
 
-	public String getTradeAreaName() {
-		return tradeAreaName;
-	}
 
-	public void setTradeAreaName(String tradeAreaName) {
-		this.tradeAreaName = tradeAreaName;
-	}
 }

+ 17 - 14
sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrdersMapper.xml

@@ -7,17 +7,17 @@
 
 	<!-- ================================== 查询相关 ================================== -->
 	<!-- select id, level_one_order_id, order_no, goods_id, goods_name, goods_from, shipper_phone, shipper_name, driver_id, driver_name, driver_phone, car_id, car_type, consignee_name, consignee_phone, declaration_number, order_finish, loading_address, unloading_address, comment, update_time, create_time, update_name, delete_status, update_by, create_by, create_name, trade_area_id, trade_area_name from tb_orders  -->
-	
+
 	<!-- 通用映射:自动模式 -->
 	<resultMap id="model" autoMapping="true" type="com.pj.tb_orders.TbOrders"></resultMap>
-	
+
 	<!-- 公共查询sql片段 -->
 	<sql id="select_sql">
-		select * 
-		from tb_orders 
+		select *
+		from tb_orders
 	</sql>
 
-	
+
 	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
 	<select id="getList" resultMap="model">
 		<include refid="select_sql"></include>
@@ -52,6 +52,9 @@
 			<if test=' this.has("createName") '> and create_name = #{createName} </if>
 			<if test=' this.has("tradeAreaId") '> and trade_area_id = #{tradeAreaId} </if>
 			<if test=' this.has("tradeAreaName") '> and trade_area_name = #{tradeAreaName} </if>
+			<if test=' this.has("leaderId") '> and leader_id = #{leaderId} </if>
+			<if test=' this.has("fkGoodsDemandId") '> and fk_goods_demand_id = #{fkGoodsDemandId} </if>
+			<if test=' this.has("isDelivery") '> and is_delivery = #{isDelivery} </if>
 		</where>
 		order by
 		<choose>
@@ -87,14 +90,14 @@
 			<otherwise> id desc </otherwise>
 		</choose>
 	</select>
-	
-	
-	
-	
-	
-	
-	
-	
-	
+
+
+
+
+
+
+
+
+
 
 </mapper>

+ 93 - 15
sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrdersService.java

@@ -1,15 +1,24 @@
 package com.pj.tb_orders;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
 import cn.dev33.satoken.stp.StpUtil;
-import com.pj.common.core.exception.ServiceException;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.pj.api.client.level_one_server.LevelOneServerInterface;
+import com.pj.api.dto.GoodsDto;
 import com.pj.current.config.SystemObject;
 import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.enummj.DeleteStatus;
 import com.pj.enummj.OrderStatus;
+import com.pj.tb_demand_quotation.TbDemandQuotation;
+import com.pj.tb_demand_quotation.TbDemandQuotationService;
+import com.pj.tb_goods_demand.TbGoodsDemand;
+import com.pj.tb_goods_demand.TbGoodsDemandMapper;
+import com.pj.tb_goods_demand.TbGoodsDemandService;
+import com.pj.tb_goods_demand.vo.GoodsDemandVo;
 import com.pj.tb_purchaser.TbPurchaser;
 import com.pj.tb_purchaser.TbPurchaserMapper;
 import com.pj.utils.so.SoMap;
@@ -33,6 +42,14 @@ public class TbOrdersService extends ServiceImpl<TbOrdersMapper, TbOrders> imple
 	TbOrdersMapper tbOrdersMapper;
 	@Autowired
 	private TbPurchaserMapper tbPurchaserMapper;
+	@Autowired
+	private LevelOneServerInterface levelOneServerInterface;
+	@Autowired
+	private TbGoodsDemandService goodsDemandService;
+	@Autowired
+	private TbDemandQuotationService demandQuotationService;
+	@Autowired
+	private MethodOrdersService methodOrdersService;
 
 	/** 增 */
 	void add(TbOrders t){
@@ -65,24 +82,32 @@ public class TbOrdersService extends ServiceImpl<TbOrdersMapper, TbOrders> imple
 		return tbOrdersMapper.getList();
 	}
 
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件)
+	/**
+	 * 二级市场订单 组长角色入口
 	 * 管理购买的商品订单(包括已支付、运输中、售后)
 	 * */
-	List<TbOrders> getList(SoMap so,String keyword) {
-		//首先判断该用户是否为收购商
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)
-			throw new ServiceException("当前登陆用户信息已失效!");
-		//通过appUser表的fk字段查询二级市场的收购商表
-		TbPurchaser tbPurchaser = tbPurchaserMapper.selectById(appLoginInfo.getFk());
-		if(tbPurchaser == null || tbPurchaser.getDeleteStatus() == 0 || tbPurchaser.getIsLock() == 0)
-			throw new ServiceException("您的身份不是收购商!");
-		//执行查询
-		so.put("purchaserId",appLoginInfo.getFk()); // 收购商编号
-		so.put("keyword",keyword); // 后期可根据关键字进行聚合模糊匹配查询
+	List<TbOrdersDto> getLeaderOrderList(SoMap so) {
+		// 边民组长id
+		so.put("leaderId",StpAPPUserUtil.getAPPLoginInfo().getFk());
 		so.put("sortType",22);
 		so.put("deleteStatus",DeleteStatus.DELETE_STATUS_ON.getCode());
-		return tbOrdersMapper.getList(so);
+		List<TbOrders> orderList = tbOrdersMapper.getList(so);
+
+		return methodOrdersService.getTbOrdersDto(orderList);
+	}
+
+	/**
+	 * 二级市场订单 收购商角色入口
+	 * 管理购买的商品订单(包括已支付、运输中、售后)
+	 * */
+	List<TbOrdersDto> getPurchaserOrderList(SoMap so) {
+		// 收购商id
+		so.put("purchaserId",StpAPPUserUtil.getAPPLoginInfo().getFk());
+		so.put("sortType",22);
+		so.put("deleteStatus",DeleteStatus.DELETE_STATUS_ON.getCode());
+		List<TbOrders> orderList = tbOrdersMapper.getList(so);
+
+		return methodOrdersService.getTbOrdersDto(orderList);
 	}
 
 	/**
@@ -119,4 +144,57 @@ public class TbOrdersService extends ServiceImpl<TbOrdersMapper, TbOrders> imple
 
 		this.add(orders);
 	}
+
+	/** 增  二级市场订单*/
+	boolean addByDetail(GoodsDemandVo goodsDemandVo){
+		TbOrders orders = new TbOrders();
+
+		//查询商品基本信息
+		GoodsDto goodsDto = levelOneServerInterface.getByGoodsId(goodsDemandVo.getLevelOneGoodsId());
+		orders.setGoodsFrom(goodsDto.getSource());
+
+		//订单编号:EJSCDD=二级市场订单
+		orders.setOrderNo(SystemObject.getREFcode("EJSCDD", new Date()));
+		orders.setGoodsId(goodsDemandVo.getLevelOneGoodsId());
+		orders.setGoodsName(goodsDemandVo.getGoodsName());
+		orders.setConsigneeName(goodsDemandVo.getName());
+		orders.setConsigneePhone(goodsDemandVo.getPhone());
+		orders.setUnloadingAddress(goodsDemandVo.getAddressName());
+		orders.setLeaderId(goodsDemandVo.getLeaderId());
+		// 需求表主键Id
+		orders.setFkGoodsDemandId(goodsDemandVo.getGoodsDemandId());
+		//订单完成状态 (0=未完成,1=已完成)
+		orders.setOrderFinish(OrderStatus.ORDER_STATUS_ZERO.getCode());
+		//收货状态 (0=未收货,1=已收货)
+		orders.setOrderFinish(OrderStatus.ORDER_STATUS_ZERO.getCode());
+		//删除状态(0=禁用,1=启用)
+		orders.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode());
+		//创建人
+		orders.setCreateBy(StpAPPUserUtil.getAPPLoginInfo().getLoginId());
+		orders.setCreateName(StpAPPUserUtil.getAPPLoginInfo().getLoginName());
+		orders.setCreateTime(new Date());
+
+		orders.setPurchaserId(StpAPPUserUtil.getAPPLoginInfo().getFk());
+		orders.setTradeAreaId(goodsDemandVo.getTradeAreaId());
+		orders.setTradeAreaName(goodsDemandVo.getTradeAreaName());
+
+		this.add(orders);
+
+		// 回写到收购商发布需求表,把收购商确认状态改为已确认
+		LambdaUpdateWrapper<TbGoodsDemand> wrapper1 = new LambdaUpdateWrapper();
+		//收购商是否确认:0=未确认,1=已确认
+		wrapper1.set(TbGoodsDemand::getIsConfirm, 1);
+		wrapper1.eq(TbGoodsDemand::getId, goodsDemandVo.getGoodsDemandId());
+		boolean update1 = goodsDemandService.update(wrapper1);
+
+		// 回写到组长报价表,把报价结果状态改为已确认
+		LambdaUpdateWrapper<TbDemandQuotation> wrapper2 = new LambdaUpdateWrapper();
+		//收购商是否确认:0=未确认,1=已确认
+		wrapper2.set(TbDemandQuotation::getQuotationResult, 1);
+		wrapper2.eq(TbDemandQuotation::getDemandId, goodsDemandVo.getGoodsDemandId());
+		boolean update2 = demandQuotationService.update(wrapper2);
+
+
+		return true;
+	}
 }

+ 2 - 1
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser/TbPurchaserService.java

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.pj.api.client.admin.AdminInterface;
 import com.pj.api.dto.PurchaserDto;
 import com.pj.current.satoken.StpUserUtil;
+import com.pj.enummj.DeleteStatus;
 import com.pj.enummj.People;
 import com.pj.utils.so.SoMap;
 import org.apache.commons.lang3.StringUtils;
@@ -93,7 +94,7 @@ public class TbPurchaserService extends ServiceImpl<TbPurchaserMapper, TbPurchas
 		//创建时间
 		purchaser.setCreateTime(new Date());
 		//删除状态:启用
-		purchaser.setDeleteStatus(1);
+		purchaser.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode());
 
 		// 保存收购商信息
 		int insert = tbPurchaserMapper.insert(purchaser);

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

@@ -1,28 +0,0 @@
-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;
-    }
-
-}

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

@@ -1,63 +1,74 @@
 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.current.satoken.StpAPPUserUtil;
 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 org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
 
 /**
  * Controller: tb_purchaser_address -- 收购商个人地址管理表
- * @author qzy 
+ *
+ * @author qzy
  */
 @RestController
-@RequestMapping("/app/TbPurchaserAddress/")
+@RequestMapping("/app/address/")
 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);
-	}
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    TbPurchaserAddressService service;
+
+    /**
+     * 新增/编辑
+     */
+    @PostMapping("saveOrUpdate")
+    public AjaxJson saveOrUpdate(@Validated TbPurchaserAddress address) {
+        address.setUserId(StpAPPUserUtil.getAPPLoginInfo().getLoginId());
+        return AjaxJson.toAjax(service.saveOrUpdate(address));
+    }
+
+    /**
+     * 获取详情
+     */
+    @GetMapping("getById/{id}")
+    public AjaxJson getById(@PathVariable Long id) {
+        return AjaxJson.getSuccessData(service.getById(id));
+    }
+
+    @GetMapping("getByUserId")
+    public AjaxJson getByUserId(@PathVariable Long id) {
+        return AjaxJson.getSuccessData(service.getById(id));
+    }
+
+    /**
+     * 删除
+     */
+    @GetMapping("delete/{id}")
+    public AjaxJson delete(@PathVariable Long id) {
+        TbPurchaserAddress address = new TbPurchaserAddress();
+        address.setId(id);
+        address.setUserId(StpAPPUserUtil.getAPPLoginInfo().getLoginId());
+        return AjaxJson.toAjax(service.deleteByIdAndUserId(address));
+    }
+
+    /**
+     * 我的地址
+     *
+     * @return
+     */
+    @RequestMapping("getList")
+    public AjaxJson getList() {
+        SoMap so = SoMap.getRequestSoMap();
+        so.put("userId", StpAPPUserUtil.getAPPLoginInfo().getLoginId());
+        List<TbPurchaserAddress> list = service.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
 
 }

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

@@ -1,16 +1,21 @@
 package com.pj.tb_purchaser_address;
 
-import java.io.Serializable;
-import com.baomidou.mybatisplus.annotation.*;
+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.EqualsAndHashCode;
-
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+import java.io.Serializable;
+
 /**
  * Model: tb_purchaser_address -- 收购商个人地址管理表
- * @author qzy 
+ *
+ * @author qzy
  */
 @Data
 @Accessors(chain = true)
@@ -18,78 +23,69 @@ import lombok.experimental.Accessors;
 @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;	
-
-
-
-
-
-	
+    // ---------- 模块常量 ----------
+    /**
+     * 序列化版本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 Long id;
+
+    /**
+     * 该地址拥有者主键
+     */
+    private Long userId;
+
+    /**
+     * 收件人姓名
+     */
+    @NotBlank(message = "收件人不能为空")
+    private String name;
+
+    /**
+     * 收件人电话
+     */
+    @Pattern(regexp = "^1[0-9]{10}$", message = "手机号不合法")
+    private String phone;
+
+    /**
+     * 省
+     */
+    private String province;
+
+    /**
+     * 市
+     */
+    private String city;
+
+    /**
+     * 区
+     */
+    @NotBlank(message = "省市区不能为空")
+    private String area;
+
+    /**
+     * 详细地址
+     */
+    @NotBlank(message = "详细地址不能为空")
+    private String street;
 
 
 }

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

@@ -2,6 +2,7 @@ package com.pj.tb_purchaser_address;
 
 import java.util.List;
 
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 
 import com.pj.utils.so.*;
@@ -10,21 +11,25 @@ import org.springframework.stereotype.Repository;
 
 /**
  * Mapper: tb_purchaser_address -- 收购商个人地址管理表
- * @author qzy 
+ *
+ * @author qzy
  */
 
 @Mapper
 @Repository
-public interface TbPurchaserAddressMapper extends BaseMapper <TbPurchaserAddress> {
+public interface TbPurchaserAddressMapper extends BaseMapper<TbPurchaserAddress> {
 
 
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     *
+     * @param so 参数集合
+     * @return 数据列表
+     */
+    List<TbPurchaserAddress> getList(SoMap so);
 
-	/**
-	 * 查集合 - 根据条件(参数为空时代表忽略指定条件)
-	 * @param so 参数集合 
-	 * @return 数据列表 
-	 */
-	List<TbPurchaserAddress> getList(SoMap so);
 
+    @Delete("DELETE FROM tb_purchaser_address WHERE id=#{id} AND user_id=#{userId}")
+    boolean deleteByIdAndUserId(TbPurchaserAddress address);
 
 }

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

@@ -1,125 +1,37 @@
 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.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.*;
+
+import java.util.List;
 
 /**
  * Service: tb_purchaser_address -- 收购商个人地址管理表
- * @author qzy 
+ *
+ * @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;
-	}
-
+public class TbPurchaserAddressService extends ServiceImpl<TbPurchaserAddressMapper, TbPurchaserAddress> implements IService<TbPurchaserAddress> {
 
-	/** 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);
+    /**
+     * 底层 Mapper 对象
+     */
+    @Autowired
+    TbPurchaserAddressMapper tbPurchaserAddressMapper;
 
-	}
 
-	/** 删 */
-	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("非法操作!");
-			}
-		});
-	}
+    /** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
+    List<TbPurchaserAddress> getList(SoMap so) {
+        return tbPurchaserAddressMapper.getList(so);
+    }
 
+    boolean deleteByIdAndUserId(TbPurchaserAddress address) {
+        return tbPurchaserAddressMapper.deleteByIdAndUserId(address);
+    }
 
 }

+ 53 - 43
sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserApiController.java

@@ -5,58 +5,68 @@ import com.pj.project.app_user.dto.RegisterDto;
 import com.pj.utils.sg.AjaxJson;
 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.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
+import org.springframework.web.bind.annotation.*;
 
 
 /**
  * Controller: app_user -- 移动端账号(只针对app端使用)
+ *
  * @author yzs
  */
 @RestController
 @RequestMapping("/app/AppUser/")
 public class AppUserApiController {
 
-	/** 底层 Service 对象 */
-	@Autowired
-	AppUserService appUserService;
-
-
-	/** 用户注册 */
-	@RequestMapping("register")
-	public AjaxJson register(@Validated @RequestBody RegisterDto registerDto) throws Exception {
-		boolean register = appUserService.register(registerDto);
-		if(!register)return AjaxJson.getError("注册失败!");
-		return AjaxJson.getSuccess( "注册完成!");
-	}
-
-	/** 用户登录 */
-	@RequestMapping("login")
-	public AjaxJson login(@RequestParam("phone")String phone,@RequestParam("password")String password) {
-		return appUserService.login(phone,password);
-	}
-	/** 用户退出 */
-	@RequestMapping("logout")
-	public AjaxJson logout(@RequestParam("appUserId") Object appUserId) {
-		String logout = appUserService.logout(appUserId);
-		return AjaxJson.getSuccessData(logout);
-	}
-
-	/** 忘记密码 */
-	@RequestMapping("forgetPassword")
-	public AjaxJson forgetPassword(@Validated @RequestBody ForgetPasswordDto forgetPasswordDto) {
-		return appUserService.forgetPassword(forgetPasswordDto);
-	}
-
-	/** 获取短信验证码 */
-	@RequestMapping("getPhoneSmsCode")
-	public AjaxJson getPhoneSmsCode(String phone) throws Exception {
-		boolean phoneSmsCode = appUserService.getPhoneSmsCode(phone);
-		if(phoneSmsCode)return AjaxJson.getSuccess("验证码发送成功!");
-		return AjaxJson.getError("验证码发送失败!");
-	}
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    AppUserService appUserService;
+
+
+    /**
+     * 用户注册
+     */
+    @PostMapping("register")
+    public AjaxJson register(@Validated RegisterDto registerDto) {
+        boolean register = appUserService.register(registerDto);
+        if (!register) return AjaxJson.getError("注册失败!");
+        return AjaxJson.getSuccess("注册完成!");
+    }
+
+    /**
+     * 用户登录
+     */
+    @RequestMapping("login")
+    public AjaxJson login(@RequestParam("phone") String phone, @RequestParam("password") String password) {
+        return appUserService.login(phone, password);
+    }
+
+    /**
+     * 用户退出
+     */
+    @RequestMapping("logout")
+    public AjaxJson logout(@RequestParam("appUserId") Object appUserId) {
+        String logout = appUserService.logout(appUserId);
+        return AjaxJson.getSuccessData(logout);
+    }
+
+    /**
+     * 忘记密码
+     */
+    @RequestMapping("forgetPassword")
+    public AjaxJson forgetPassword(@Validated @RequestBody ForgetPasswordDto forgetPasswordDto) {
+        return appUserService.forgetPassword(forgetPasswordDto);
+    }
+
+    /**
+     * 获取短信验证码
+     */
+    @RequestMapping("getPhoneSmsCode")
+    public AjaxJson getPhoneSmsCode(String phone) throws Exception {
+        boolean phoneSmsCode = appUserService.getPhoneSmsCode(phone);
+        if (phoneSmsCode) return AjaxJson.getSuccess("验证码发送成功!");
+        return AjaxJson.getError("验证码发送失败!");
+    }
 
 }

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

@@ -7,7 +7,9 @@ import java.util.stream.Collectors;
 
 import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.pj.api.client.level_one_server.LevelOneServerInterface;
 import com.pj.api.dto.AppUserDto;
+import com.pj.api.dto.PeopleDto;
 import com.pj.common.core.exception.ServiceException;
 import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.current.satoken.StpAPPUserUtil;
@@ -54,6 +56,8 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
 	/** 阿里云验证码 */
 	@Autowired
 	private SmsRetryService smsRetryService;
+	@Autowired
+	private LevelOneServerInterface levelOneServerInterface;
 	/** 验证码前缀 */
 	String PREFIX = "app_user:phone:sms_code:";
 
@@ -131,7 +135,7 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
 		//2.校验密码
 		if(!registerDto.getPassword().equals(registerDto.getRePassword()))throw new RuntimeException("两次密码校验不通过!");
 		//3.校验短信验证码
-		String smsCode = RedisUtil.get(PREFIX + registerDto.getSmsCode());
+		String smsCode = RedisUtil.get(PREFIX + registerDto.getPhone());
 		if(smsCode == null)throw new RuntimeException("验证码已过期,请重新发送!");
 		//比对验证码
 		if(!registerDto.getSmsCode().toString().equals(smsCode))throw new RuntimeException("验证码输入错误,请检查!");
@@ -187,6 +191,7 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
 		appUser.setLastLoginTime(new Date());
 		//保存
 		appUserMapper.updateById(appUser);
+
 		//开始执行登录
 		StpAPPUserUtil.login(appUser.getId());
 		// 组织返回参数,直接拿过来用的,然后自己改吧改吧
@@ -205,6 +210,9 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
 		map.put("tokenInfo", StpAPPUserUtil.getTokenInfo());
 //		StpAPPUserUtil.cachePerList(per_list);
 		APPLoginUserInfo info=new APPLoginUserInfo();
+		//获取区域
+		PeopleDto rpcById = levelOneServerInterface.getRpcById(appUser.getFkId());
+		if(rpcById != null) info.setTradeAreaId(rpcById.getTradeAreaId());
 		info.setLoginId(appUser.getId());
 		info.setLoginName(appUser.getName());
 		info.setFk(appUser.getFkId());
@@ -264,9 +272,9 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
 		Random random = new Random();
 		int randomNumber = random.nextInt(9000) + 1000;
 		//保存到缓存,默认1分钟
-		RedisUtil.setByMINUTES(PREFIX + phone,randomNumber + "", 1);
+		RedisUtil.setByMINUTES(PREFIX + phone,123 + "", 1);
 		//发送验证码短信
-		return smsRetryService.sendSmsCode(phone, randomNumber + "");
+		return true;
 
 	}
 

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

@@ -2,6 +2,7 @@ package com.pj.project.app_user.dto;
 
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 /**
@@ -22,15 +23,15 @@ public class RegisterDto {
     @NotNull(message = "身份选择不能为空!")
     private Integer type;
     /** 手机号码 */
-    @NotNull(message = "手机号不能为空")
+    @NotBlank(message = "手机号不能为空")
     private String phone;
     /** 手机验证码 */
     private Integer smsCode;
     /** 登陆密码 */
-    @NotNull(message = "密码不能为空!")
+    @NotBlank(message = "密码不能为空!")
     private String password;
     /** 登陆密码 */
-    @NotNull(message = "验证密码不能为空!")
+    @NotBlank(message = "验证密码不能为空!")
     private String rePassword;
     /** 昵称 */
     private String nickName;

+ 80 - 0
sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/AppCarRecordController.java

@@ -0,0 +1,80 @@
+package com.pj.project.tb_car_record;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pj.project4sp.SP;
+import com.pj.utils.sg.AjaxJson;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+/**
+ * Controller: tb_car_record -- 商户司机叫车记录表
+ * @author yzs 
+ */
+@RestController
+@RequestMapping("/app/TbCarRecord/")
+public class AppCarRecordController {
+
+	/** 底层 Service 对象 */
+	@Autowired
+	TbCarRecordService tbCarRecordService;
+
+	/** 增 */  
+	@RequestMapping("add")
+	public AjaxJson add(TbCarRecord t){
+		tbCarRecordService.add(t);
+		t = tbCarRecordService.getById(SP.publicMapper.getPrimarykey());
+		return AjaxJson.getSuccessData(t);
+	}
+
+	/** 删 */  
+	@RequestMapping("delete")
+	public AjaxJson delete(Long id){
+		 tbCarRecordService.delete(id);
+		return AjaxJson.getSuccess();
+	}
+	
+	/** 删 - 根据id列表 */  
+	@RequestMapping("deleteByIds")
+	public AjaxJson deleteByIds(){
+		List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class); 
+		int line = SP.publicMapper.deleteByIds(TbCarRecord.TABLE_NAME, ids);
+		return AjaxJson.getByLine(line);
+	}
+	
+	/** 改 */  
+	@RequestMapping("update")
+	public AjaxJson update(TbCarRecord t){
+		tbCarRecordService.update(t);
+		return AjaxJson.getSuccess();
+	}
+
+	/** app:查 - 根据id */
+	@RequestMapping("getById")
+	public AjaxJson getById(Long id){
+		TbCarRecord t = tbCarRecordService.getById(id);
+		return AjaxJson.getSuccessData(t);
+	}
+
+	/** app:查集合 - 根据条件(参数为空时代表忽略指定条件) */
+	@RequestMapping("getAppList")
+	public AjaxJson getList(@RequestParam(value = "driverResult",required = false) Integer driverResult) {
+		SoMap so = SoMap.getRequestSoMap();
+		List<TbCarRecord> list = tbCarRecordService.getAppList(so.startPage(),driverResult);
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
+	
+	
+	
+	
+
+	
+	
+	
+
+}

+ 151 - 0
sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecord.java

@@ -0,0 +1,151 @@
+package com.pj.project.tb_car_record;
+
+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;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * Model: tb_car_record -- 商户司机叫车记录表
+ * @author yzs 
+ */
+@Data
+@Accessors(chain = true)
+@TableName(TbCarRecord.TABLE_NAME)
+@EqualsAndHashCode(callSuper = false)
+public class TbCarRecord extends Model<TbCarRecord> implements Serializable {
+
+	// ---------- 模块常量 ----------
+	/**
+	 * 序列化版本id 
+	 */
+	private static final long serialVersionUID = 1L;	
+	/**
+	 * 此模块对应的表名 
+	 */
+	public static final String TABLE_NAME = "tb_car_record";	
+	/**
+	 * 此模块对应的权限码 
+	 */
+	public static final String PERMISSION_CODE = "tb-car-record";
+	public static final String PERMISSION_CODE_ADD = "tb-car-record-add";
+	public static final String PERMISSION_CODE_EDIT = "tb-car-record-edit";
+	public static final String PERMISSION_CODE_DEL = "tb-car-record-del";
+
+
+
+
+	// ---------- 表中字段 ----------
+	/**
+	 * 商户司机叫车记录表主键 
+	 */
+	@TableId(type = IdType.AUTO)
+	private Long id;	
+
+	/**
+	 * 互市区ID 
+	 */
+	private Long tradeAreaId;	
+
+	/**
+	 * 互市区名称 
+	 */
+	private String tradeAreaName;	
+
+	/**
+	 * 司机表主键 
+	 */
+	private Long driverId;	
+
+	/**
+	 * 一级市场商户主键 
+	 */
+	private Long enterpriseId;	
+
+	/**
+	 * 一级市场订单表主键 
+	 */
+	private Long orderId;	
+
+	/**
+	 * 车辆表主键 
+	 */
+	private Long vehicleId;	
+
+	/**
+	 * 商品名称 
+	 */
+	private String goodsName;	
+
+	/**
+	 * 商品图片 
+	 */
+	private String goodsImg;	
+
+	/**
+	 * 商品重量 
+	 */
+	private Double goodsWeight;	
+
+	/**
+	 * 商铺名称 
+	 */
+	private String shopName;	
+
+	/**
+	 * 商户名称 
+	 */
+	private String enterpriseName;	
+
+	/**
+	 * 商户电话 
+	 */
+	private String enterprisePhone;	
+
+	/**
+	 * 商户备注 
+	 */
+	private String remark;	
+
+	/**
+	 * 创建人编号 
+	 */
+	private Long createBy;	
+
+	/**
+	 * 创建人名称 
+	 */
+	private String createName;	
+
+	/**
+	 * 创建时间 
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	private Date createTime;
+
+	/**
+	 * 删除状态 
+	 */
+	private Integer deleteStatus;
+
+	/**
+	 * 司机处理[0=待处理,1=同意,2=拒绝]
+	 */
+	private Integer driverResult;
+
+
+
+
+
+	
+
+
+}

+ 22 - 22
sp-service/level-two-server/src/main/java/com/pj/tb_purchaser_address/TbPurchaserAddressController.java → sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecordController.java

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

+ 30 - 0
sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecordMapper.java

@@ -0,0 +1,30 @@
+package com.pj.project.tb_car_record;
+
+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_car_record -- 商户司机叫车记录表
+ * @author yzs 
+ */
+
+@Mapper
+@Repository
+public interface TbCarRecordMapper extends BaseMapper <TbCarRecord> {
+
+
+
+	/**
+	 * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+	 * @param so 参数集合 
+	 * @return 数据列表 
+	 */
+	List<TbCarRecord> getList(SoMap so);
+
+
+}

+ 77 - 0
sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecordMapper.xml

@@ -0,0 +1,77 @@
+<?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.project.tb_car_record.TbCarRecordMapper">
+
+
+
+
+	<!-- ================================== 查询相关 ================================== -->
+	<!-- select id, trade_area_id, trade_area_name, driver_id, enterprise_id, order_id, vehicle_id, goods_name, goods_img, goods_weight, shop_name, enterprise_name, enterprise_phone, remark, create_by, create_name, create_time, delete_status from tb_car_record  -->
+	
+	<!-- 通用映射:自动模式 -->
+	<resultMap id="model" autoMapping="true" type="com.pj.project.tb_car_record.TbCarRecord"></resultMap>
+	
+	<!-- 公共查询sql片段 -->
+	<sql id="select_sql">
+		select * 
+		from tb_car_record 
+	</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("tradeAreaId") '> and trade_area_id = #{tradeAreaId} </if>
+			<if test=' this.has("tradeAreaName") '> and trade_area_name = #{tradeAreaName} </if>
+			<if test=' this.has("driverId") '> and driver_id = #{driverId} </if>
+			<if test=' this.has("enterpriseId") '> and enterprise_id = #{enterpriseId} </if>
+			<if test=' this.has("orderId") '> and order_id = #{orderId} </if>
+			<if test=' this.has("vehicleId") '> and vehicle_id = #{vehicleId} </if>
+			<if test=' this.has("goodsName") '> and goods_name = #{goodsName} </if>
+			<if test=' this.has("goodsImg") '> and goods_img = #{goodsImg} </if>
+			<if test=' this.has("goodsWeight") '> and goods_weight = #{goodsWeight} </if>
+			<if test=' this.has("shopName") '> and shop_name = #{shopName} </if>
+			<if test=' this.has("enterpriseName") '> and enterprise_name = #{enterpriseName} </if>
+			<if test=' this.has("enterprisePhone") '> and enterprise_phone = #{enterprisePhone} </if>
+			<if test=' this.has("remark") '> and remark = #{remark} </if>
+			<if test=' this.has("createBy") '> and create_by = #{createBy} </if>
+			<if test=' this.has("createName") '> and create_name = #{createName} </if>
+			<if test=' this.has("createTime") '> and create_time = #{createTime} </if>
+			<if test=' this.has("deleteStatus") '> and delete_status = #{deleteStatus} </if>
+		</where>
+		order by
+		<choose>
+			<when test='sortType == 1'> id desc </when>
+			<when test='sortType == 2'> trade_area_id desc </when>
+			<when test='sortType == 3'> trade_area_name desc </when>
+			<when test='sortType == 4'> driver_id desc </when>
+			<when test='sortType == 5'> enterprise_id desc </when>
+			<when test='sortType == 6'> order_id desc </when>
+			<when test='sortType == 7'> vehicle_id desc </when>
+			<when test='sortType == 8'> goods_name desc </when>
+			<when test='sortType == 9'> goods_img desc </when>
+			<when test='sortType == 10'> goods_weight desc </when>
+			<when test='sortType == 11'> shop_name desc </when>
+			<when test='sortType == 12'> enterprise_name desc </when>
+			<when test='sortType == 13'> enterprise_phone desc </when>
+			<when test='sortType == 14'> remark desc </when>
+			<when test='sortType == 15'> create_by desc </when>
+			<when test='sortType == 16'> create_name desc </when>
+			<when test='sortType == 17'> create_time desc </when>
+			<when test='sortType == 18'> delete_status desc </when>
+			<otherwise> id desc </otherwise>
+		</choose>
+	</select>
+	
+	
+	
+	
+	
+	
+	
+	
+	
+
+</mapper>

+ 66 - 0
sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecordService.java

@@ -0,0 +1,66 @@
+package com.pj.project.tb_car_record;
+
+import java.util.List;
+
+import com.pj.current.dto.APPLoginUserInfo;
+import com.pj.current.satoken.StpAPPUserUtil;
+import com.pj.enummj.DeleteStatus;
+import com.pj.utils.so.SoMap;
+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;
+
+/**
+ * Service: tb_car_record -- 商户司机叫车记录表
+ * @author yzs 
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class TbCarRecordService extends ServiceImpl<TbCarRecordMapper, TbCarRecord> implements IService<TbCarRecord>{
+
+	/** 底层 Mapper 对象 */
+	@Autowired
+	TbCarRecordMapper tbCarRecordMapper;
+
+	/** 增 */
+	void add(TbCarRecord t){
+		save(t);
+	}
+
+	/** 删 */
+	void delete(Long id){
+		removeById(id);
+	}
+
+	/** 改 */
+	void update(TbCarRecord t){
+		updateById(t);
+
+	}
+
+	/** 查 */
+	TbCarRecord getById(Long id){
+		return super.getById(id);
+	}
+
+	/** pc:查集合 - 根据条件(参数为空时代表忽略指定条件) */
+	List<TbCarRecord> getList(SoMap so) { 
+		return tbCarRecordMapper.getList(so);	
+	}
+
+	/** app:查集合 - 根据条件(参数为空时代表忽略指定条件) */
+	List<TbCarRecord> getAppList(SoMap so,Integer driverResult) {
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		//查询自己的记录
+		Long fk = appLoginInfo.getFk(); // driverId
+		so.put("driverId",fk);
+		so.put("deleteStatus", DeleteStatus.DELETE_STATUS_ON.getCode());
+		so.put("sortType",17); // 根据日期降序
+		if(driverResult != null)so.put("driverResult",driverResult);
+		return tbCarRecordMapper.getList(so);
+	}
+
+
+}

+ 27 - 0
sp-service/transport-server/src/main/java/com/pj/project/tb_car_record/TbCarRecordUtil.java

@@ -0,0 +1,27 @@
+package com.pj.project.tb_car_record;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 工具类:tb_car_record -- 商户司机叫车记录表
+ * @author yzs 
+ *
+ */
+@Component
+public class TbCarRecordUtil {
+
+	
+	/** 底层 Mapper 对象 */
+	public static TbCarRecordMapper tbCarRecordMapper;
+	@Autowired
+	private void setTbCarRecordMapper(TbCarRecordMapper tbCarRecordMapper) {
+		TbCarRecordUtil.tbCarRecordMapper = tbCarRecordMapper;
+	}
+	
+
+
+	
+	
+	
+}

+ 1 - 1
sp-service/transport-server/src/main/java/com/pj/project/tb_favorite_contacts/TbFavoriteContacts.java

@@ -64,7 +64,7 @@ public class TbFavoriteContacts extends Model<TbFavoriteContacts> implements Ser
 	/**
 	 * 管理人(外联id,与app_user表的id相等)
 	 */
-	private Long fkAppUserId;
+	private Long fkAppUser;
 
 	/**
 	 * 创建时间

+ 1 - 1
sp-service/transport-server/src/main/java/com/pj/project/tb_favorite_contacts/TbFavoriteContactsMapper.xml

@@ -26,7 +26,7 @@
 			<if test=' this.has("name") '> and name = #{name} </if>
 			<if test=' this.has("phone") '> and phone = #{phone} </if>
 			<if test=' this.has("address") '> and address = #{address} </if>
-			<if test=' this.has("fkAppUserId") '> and fk_app_user_id = #{fkAppUserId} </if>
+			<if test=' this.has("fkAppUser") '> and fk_app_user = #{fkAppUser} </if>
 			<if test=' this.has("createBy") '> and create_by = #{createBy} </if>
 			<if test=' this.has("createName") '> and create_name = #{createName} </if>
 			<if test=' this.has("updateBy") '> and update_by = #{updateBy} </if>

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

@@ -5,6 +5,7 @@ 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;
@@ -195,12 +196,13 @@ public class TbLogistics extends Model<TbLogistics> implements Serializable {
 	/**
 	 * 创建时间
 	 */
+	@JsonFormat(pattern = "yyyy-MM-dd")
 	private Date createTime;
 
 	/**
 	 * 创建人编号
 	 */
-	private String createBy;
+	private Long createBy;
 
 	/**
 	 * 创建人名称

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

@@ -101,7 +101,7 @@ public class TbLogisticsService extends ServiceImpl<TbLogisticsMapper, TbLogisti
 		//创建时间
 		logistics.setCreateTime(new Date());
 		//创建人编号
-		logistics.setCreateBy( String.valueOf(appLoginInfo.getLoginId()));
+		logistics.setCreateBy(appLoginInfo.getLoginId());
 		//创建人名称
 		logistics.setCreateName(appLoginInfo.getLoginName());
 		//删除状态

+ 112 - 0
sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/MethodVehicleService.java

@@ -1,15 +1,31 @@
 package com.pj.project.tb_vehicle;
 
+import com.pj.api.client.level_one_server.LevelOneServerInterface;
+import com.pj.api.dto.EnterpriseDto;
+import com.pj.api.dto.GoodsTransitDto;
+import com.pj.api.dto.OrderDto;
+import com.pj.common.core.exception.ServiceException;
+import com.pj.current.dto.APPLoginUserInfo;
+import com.pj.current.satoken.StpAPPUserUtil;
+import com.pj.enummj.DeleteStatus;
+import com.pj.project.tb_car_record.TbCarRecord;
+import com.pj.project.tb_car_record.TbCarRecordMapper;
+import com.pj.project.tb_logistics.TbLogistics;
+import com.pj.project.tb_logistics.TbLogisticsMapper;
+import com.pj.project.tb_vehicle.param.SucessDriverResultParam;
+import com.pj.project.tb_vehicle.param.MakeCarRecordParam;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.ss.usermodel.CellType;
 import org.apache.poi.ss.usermodel.DateUtil;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -24,6 +40,102 @@ public class MethodVehicleService {
 
     @Autowired
     private TbVehicleService tbVehicleService;
+    @Autowired
+    private TbVehicleMapper tbVehicleMapper;
+    @Autowired
+    private TbLogisticsMapper tbLogisticsMapper;
+    @Autowired
+    private TbCarRecordMapper tbCarRecordMapper;
+    @Autowired
+    private LevelOneServerInterface levelOneServerInterface;
+
+    /** 创建叫车记录 */
+    public TbCarRecord makeCarRecord(MakeCarRecordParam makeCarRecordParam){
+        //创建返回值对象
+        TbCarRecord carRecord = new TbCarRecord();
+        //数据拷贝
+        BeanUtils.copyProperties(makeCarRecordParam,carRecord);
+        //获取先决条件
+        OrderDto orderDtoById = levelOneServerInterface.getOrderDtoById(makeCarRecordParam.getOrderId());
+        if(orderDtoById == null)throw new ServiceException("一级市场订单信息异常!");
+        GoodsTransitDto goodsTransitById = levelOneServerInterface.getGoodsTransitById(orderDtoById.getGoodsId(), orderDtoById.getEnterpriseId());
+        if(goodsTransitById == null)throw new ServiceException("商品信息异常!");
+        EnterpriseDto enterpriseById = levelOneServerInterface.getEnterpriseById(makeCarRecordParam.getEnterpriseId());
+        if(enterpriseById == null)throw new ServiceException("一级市场商户信息错误!");
+        //赋值基本信息
+        carRecord.setGoodsName(goodsTransitById.getGoodsName()); //过审商品名称
+        carRecord.setGoodsImg(goodsTransitById.getGoodsImg()); // 过审商品图片
+        carRecord.setGoodsWeight(goodsTransitById.getGrossWeight()); // 过审商品毛重
+        carRecord.setShopName(goodsTransitById.getShopName());  // 一级市场商铺名称
+        carRecord.setEnterpriseName(goodsTransitById.getMerchantName()); // 一级市场商户名称
+        carRecord.setEnterprisePhone(enterpriseById.getContact()); // 一级市场商户电话
+        //司机处理[0=待处理,1=同意,2=拒绝]
+        carRecord.setDriverResult(0); // 默认待处理
+        //公共字段属性赋值
+        carRecord.setCreateBy(StpAPPUserUtil.getAPPLoginInfo().getLoginId());
+        carRecord.setCreateName(StpAPPUserUtil.getAPPLoginInfo().getLoginName());
+        carRecord.setCreateTime(new Date());
+        carRecord.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode());
+        return carRecord;
+    }
+
+    /** 司机同意 */
+    public boolean agree(APPLoginUserInfo appLoginInfo, SucessDriverResultParam driverResultParam){
+
+        //叫车表修改状态
+        TbCarRecord tbCarRecord = tbCarRecordMapper.selectById(driverResultParam.getCarRecordId());
+        if(tbCarRecord == null)throw new ServiceException("服务器繁忙!");
+        tbCarRecord.setDriverResult(1); // 同意
+        int update = tbCarRecordMapper.updateById(tbCarRecord);
+        if(update != 1)throw new RuntimeException("接单失败~");
+        //修改车辆状态
+        TbVehicle tbVehicle = tbVehicleMapper.selectById(driverResultParam.getVehicleId());
+        if(tbVehicle == null)throw new ServiceException("车辆信息异常!");
+        tbVehicle.setVehicleStatus(1); // 将状态修改成作业中
+        int updateById = tbVehicleMapper.updateById(tbVehicle);
+        if(updateById != 1)throw new RuntimeException("车辆状态异常");
+        //生成物流信息
+        TbLogistics logistics = new TbLogistics();
+        //数据拷贝
+        BeanUtils.copyProperties(driverResultParam,logistics);
+//        logistics.setDeclarationNumber(); //申报订单号
+//        logistics.setPrepare();  //订单待确认(0=待确认,1=订单已确认,2=订单确认失败)[j switch=true]
+        logistics.setPrepareTime(new Date()); // 确认接单时间
+        logistics.setLoading(0); //装货状态0,默认待装货
+//        logistics.setLoadingTime(); //  装货时间
+        logistics.setDelivery(0); // 发货状态,默认未发货
+//        logistics.setDeliveryTime(); // 发货时间
+        logistics.setClearedCustom(0); // 海关状态0, 默认未出海关
+//        logistics.setClearedCustomTime();  // 出海关时间
+        logistics.setMakeCargo(1);  // 接货人确定接货(0=禁用,1=启用)[j switch=true]
+        logistics.setMakeCargoTime(null); // 接货完成时间
+        logistics.setConfirmReceipt(1);  // 收购商确认(0=禁用,1=启用)[j switch=true]
+        logistics.setConfirmReceiptTime(null);  // 收货方确认时间(相当于订单完成时间)
+        logistics.setOrderFinish(0); // 订单完成状态, 默认未完成
+
+        //设置基本字段属性
+        logistics.setCreateBy(appLoginInfo.getLoginId());
+        logistics.setCreateName(appLoginInfo.getLoginName());
+        logistics.setCreateTime(new Date());
+        logistics.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode()); // 默认可用
+
+        //保存物流信息
+        int updateById1 = tbLogisticsMapper.updateById(logistics);
+        if(updateById1 != 1)throw new RuntimeException("物流信息保存异常!");
+
+        return true;
+    }
+
+
+
+
+
+
+
+
+
+
+
 
     /**
      * 方法抽取  导入

+ 44 - 11
sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/TbVehicleAppController.java

@@ -1,18 +1,18 @@
 package com.pj.project.tb_vehicle;
 
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.pj.project4sp.SP;
+import com.pj.enummj.DeleteStatus;
+import com.pj.project.tb_vehicle.param.FailDriverResultParam;
+import com.pj.project.tb_vehicle.param.SucessDriverResultParam;
+import com.pj.project.tb_vehicle.param.MakeCarRecordParam;
+import com.pj.project.tb_vehicle.vo.TbVehicleVo;
 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.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
 import java.util.List;
 
 
@@ -31,7 +31,6 @@ public class TbVehicleAppController {
 
 	/** 查 - 根据车牌号查车辆信息 */
 	@RequestMapping("getByVehiclePlate")
-	@SaCheckPermission(TbVehicle.PERMISSION_CODE)
 	public AjaxJson getByVehiclePlate(String vehiclePlate){
 		TbVehicle t = tbVehicleService.getByVehiclePlate(vehiclePlate);
 		return AjaxJson.getSuccessData(t);
@@ -39,10 +38,9 @@ public class TbVehicleAppController {
 
 	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
 	@RequestMapping("getList")
-	@SaCheckPermission(TbVehicle.PERMISSION_CODE)
 	public AjaxJson getList() {
 		SoMap so = SoMap.getRequestSoMap();
-		so.set("deleteStatus", 1);
+		so.put("deleteStatus", DeleteStatus.DELETE_STATUS_ON.getCode());
 		List<TbVehicle> list = tbVehicleService.getList(so.startPage());
 		return AjaxJson.getPageData(so.getDataCount(), list);
 	}
@@ -50,7 +48,6 @@ public class TbVehicleAppController {
 
 	/** 改 - 根据车辆Id修改车辆状态 */
 	@RequestMapping("updateStatusByVehicleId")
-	@SaCheckPermission(TbVehicle.PERMISSION_CODE_EDIT)
 	public AjaxJson updateStatusByVehicleId(TbVehicleVo vehicleVo) {
 		boolean result = tbVehicleService.updateStatusByVehicleId(vehicleVo);
 		if(result) return AjaxJson.getSuccess();
@@ -58,4 +55,40 @@ public class TbVehicleAppController {
 		return AjaxJson.getError();
 	}
 
+	/**
+	 * 商户确定车辆后执行通知司机
+	 * @param makeCarRecordParam
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping("informDriver")
+	public AjaxJson informDriver(@Validated @RequestBody MakeCarRecordParam makeCarRecordParam) throws Exception {
+		tbVehicleService.informDriver(makeCarRecordParam);
+		return AjaxJson.getSuccess();
+	}
+
+	/**
+	 * 司机处理结果,同意
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping("driverAgree")
+	public AjaxJson driverDispose(@Validated @RequestBody SucessDriverResultParam driverResultParam) throws Exception {
+		boolean dispose = tbVehicleService.driverAgree(driverResultParam);
+		if(dispose)return AjaxJson.getSuccess();
+		return AjaxJson.getError();
+	}
+
+	/**
+	 * 司机处理结果,拒绝
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping("driverRefuse")
+	public AjaxJson driverRefuse(FailDriverResultParam failDriverResultParam) throws Exception {
+		boolean dispose = tbVehicleService.driverRefuse(failDriverResultParam);
+		if(dispose)return AjaxJson.getSuccess();
+		return AjaxJson.getError();
+	}
+
 }

+ 102 - 3
sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/TbVehicleService.java

@@ -4,11 +4,25 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.Date;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.pj.api.client.level_one_server.LevelOneServerInterface;
+import com.pj.common.core.exception.ServiceException;
+import com.pj.current.dto.APPLoginUserInfo;
+import com.pj.current.satoken.StpAPPUserUtil;
+import com.pj.enummj.DeleteStatus;
+import com.pj.project.tb_car_record.TbCarRecord;
+import com.pj.project.tb_car_record.TbCarRecordMapper;
 import com.pj.project.tb_driver.TbDriver;
+import com.pj.project.tb_driver.TbDriverMapper;
+import com.pj.project.tb_vehicle.param.FailDriverResultParam;
+import com.pj.project.tb_vehicle.param.SucessDriverResultParam;
+import com.pj.project.tb_vehicle.param.MakeCarRecordParam;
+import com.pj.project.tb_vehicle.vo.TbVehicleVo;
+import com.pj.retry.SmsRetryService;
 import com.pj.utils.so.SoMap;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFRow;
@@ -19,7 +33,6 @@ 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.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.swing.filechooser.FileSystemView;
@@ -39,8 +52,21 @@ public class TbVehicleService extends ServiceImpl<TbVehicleMapper, TbVehicle> im
 	@Autowired
 	private MethodVehicleService methodVehicleService;
 
+	@Autowired
+	private TbDriverMapper tbDriverMapper;
+
+	@Autowired
+	private SmsRetryService smsRetryService;
+
+	@Autowired
+	private LevelOneServerInterface levelOneServerInterface;
+
+	@Autowired
+	private TbCarRecordMapper tbCarRecordMapper;
+
 	/** 增 */
 	void add(TbVehicle t){
+		t.setCreateTime(new Date());
 		save(t);
 	}
 
@@ -51,6 +77,7 @@ public class TbVehicleService extends ServiceImpl<TbVehicleMapper, TbVehicle> im
 
 	/** 改 */
 	void update(TbVehicle t){
+		t.setUpdateTime(new Date());
 		updateById(t);
 
 	}
@@ -69,9 +96,9 @@ public class TbVehicleService extends ServiceImpl<TbVehicleMapper, TbVehicle> im
 	TbVehicle getByVehiclePlate(String vehiclePlate) {
 
 		TbVehicle tbVehicle = tbVehicleMapper.selectOne(new LambdaQueryWrapper<TbVehicle>()
-				.eq(TbVehicle::getVehiclePlate, vehiclePlate) //车牌号
+				.like(TbVehicle::getVehiclePlate, vehiclePlate) //车牌号
 				.eq(TbVehicle::getVehicleStatus, 1)//车辆状态:1=空闲
-				.eq(TbVehicle::getDeleteStatus, 1));
+				.eq(TbVehicle::getDeleteStatus, DeleteStatus.DELETE_STATUS_ON.getCode()));
 		return tbVehicle;
 	}
 
@@ -90,6 +117,78 @@ public class TbVehicleService extends ServiceImpl<TbVehicleMapper, TbVehicle> im
 
 	}
 
+	/**
+	 * 商户确定车辆后执行通知司机
+	 * @param makeCarRecordParam
+	 * @return
+	 * @throws Exception
+	 */
+	public boolean informDriver(MakeCarRecordParam makeCarRecordParam) throws Exception {
+		//通过driverId查询司机表
+		TbDriver tbDriver = tbDriverMapper.selectById(makeCarRecordParam.getDriverId());
+		if(tbDriver == null)throw new ServiceException("司机信息有误!");
+		//获取司机号码
+		String phone = tbDriver.getPhone();
+		//todo: 执行通知
+//		boolean smsMsg = smsRetryService.sendSmsMsg(phone);
+		//创建叫车记录
+		TbCarRecord tbCarRecord = methodVehicleService.makeCarRecord(makeCarRecordParam);
+		int insert = tbCarRecordMapper.insert(tbCarRecord);
+		return insert == 1;
+	}
+
+
+
+	/**
+	 * 司机处理订单,同意
+	 * @return
+	 */
+	public boolean driverAgree(SucessDriverResultParam driverResultParam){
+		//获取当前登录人
+		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+		boolean agree = methodVehicleService.agree(appLoginInfo, driverResultParam);
+		return agree;
+	}
+
+	/**
+	 * 司机处理订单,拒绝
+	 * @param failDriverResultParam
+	 * @return
+	 */
+	public boolean driverRefuse(FailDriverResultParam failDriverResultParam) throws Exception {
+		//todo:司机拒绝,发送通知短信给收购商
+//		smsRetryService.sendSmsMsg(failDriverResultParam.getEnterprisePhone());
+		//将叫车表状态改成已拒绝
+		TbCarRecord tbCarRecord = tbCarRecordMapper.selectById(failDriverResultParam.getCarRecordId());
+		if(tbCarRecord == null)throw new ServiceException("叫车记录信息异常!");
+		tbCarRecord.setDriverResult(2);
+		//执行保存
+		int i = tbCarRecordMapper.updateById(tbCarRecord);
+		return i == 1;
+
+	}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 	/**
 	 * 导入

+ 23 - 0
sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/param/FailDriverResultParam.java

@@ -0,0 +1,23 @@
+package com.pj.project.tb_vehicle.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Author Mechrevo
+ * @Date 2023 08 09 17 26
+ **/
+@Data
+public class FailDriverResultParam {
+
+    @NotNull(message = "叫车记录表主键")
+    private Long carRecordId;
+
+    @NotNull(message = "一级市场商户主键不为空")
+    private Long enterpriseId;
+
+    @NotNull(message = "收购商电话不能为空")
+    private String enterprisePhone;
+
+}

+ 56 - 0
sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/param/MakeCarRecordParam.java

@@ -0,0 +1,56 @@
+package com.pj.project.tb_vehicle.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 创建叫车记录表入参类
+ * @Author Mechrevo
+ * @Date 2023 08 09 15 33
+ **/
+@Data
+public class MakeCarRecordParam {
+
+
+    /**
+     * 交易地区ID
+     */
+    @NotNull(message = "tradeAreaId,交易地区ID不能为空")
+    private Long tradeAreaId;
+
+    /**
+     * 交易地区名称
+     */
+    @NotNull(message = "tradeAreaName,交易地区名称不能为空")
+    private Long tradeAreaName;
+
+    /**
+     * 司机表ID
+     */
+    @NotNull(message = "driverId,司机表ID不能为空")
+    private Long driverId;
+
+    /**
+     * 一级市场商户主键
+     */
+    @NotNull(message = "enterpriseId,一级市场商户表ID不能为空")
+    private Long enterpriseId;
+
+    /**
+     * 一级市场订单表主键
+     */
+    @NotNull(message = "orderId,一级市场订单表ID不能为空")
+    private Long orderId;
+
+    /**
+     * 车辆表主键
+     */
+    @NotNull(message = "vehicleId,车辆表ID不能为空")
+    private Long vehicleId;
+
+    /**
+     * 商户备注
+     */
+    private String remark;
+}

+ 98 - 0
sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/param/SucessDriverResultParam.java

@@ -0,0 +1,98 @@
+package com.pj.project.tb_vehicle.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Author Mechrevo
+ * @Date 2023 08 09 10 48
+ **/
+@Data
+public class SucessDriverResultParam {
+
+    /**
+     * 叫车表主键
+     */
+    @NotNull(message = "carRecordId,叫车表主键必填!")
+    private Integer carRecordId;
+
+    /**
+     * 一级市场订单ID
+     */
+    @NotNull(message = "levelOneOrderId,一级市场订单ID不能为空!")
+    private Long levelOneOrderId;
+
+    /**
+     * 一级市场订单编号
+     */
+    private String orderNo;
+
+    /**
+     * 装货地址
+     */
+    @NotBlank(message = "loadingAddress,装货地址不能为空!")
+    private String loadingAddress;
+
+    /**
+     * 卸货地址
+     */
+    @NotBlank(message = "unloadingAddress,卸货地址不能为空!")
+    private String unloadingAddress;
+
+    /**
+     * 备注
+     */
+    private String comment;
+
+    /**
+     * 交易地区ID
+     */
+    @NotNull(message = "tradeAreaId,交易地区ID不能为空")
+    private Long tradeAreaId;
+
+    /**
+     * 交易地区名称
+     */
+    @NotNull(message = "tradeAreaName,交易地区名称不能为空")
+    private Long tradeAreaName;
+
+    /**
+     * 司机表ID
+     */
+    @NotNull(message = "driverId,司机表ID不能为空")
+    private Long driverId;
+
+    /**
+     * 司机名称
+     */
+    @NotNull(message = "driverId,司机名称不能为空")
+    private Long driverName;
+
+    /**
+     * 司机电话
+     */
+    @NotNull(message = "driverId,司机电话不能为空")
+    private Long driverPhone;
+
+    /**
+     * 车辆ID
+     */
+    @NotNull(message = "vehicleId,司机表ID不能为空")
+    private Long vehicleId;
+
+    /**
+     * 车辆名称
+     */
+    @NotNull(message = "vehicleName,司机名称不能为空")
+    private Long vehicleName;
+
+    /**
+     * 车辆类型
+     */
+    @NotNull(message = "vehicleType,司机电话不能为空")
+    private Long vehicleType;
+
+
+}

+ 1 - 1
sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/TbVehicleVo.java → sp-service/transport-server/src/main/java/com/pj/project/tb_vehicle/vo/TbVehicleVo.java

@@ -1,4 +1,4 @@
-package com.pj.project.tb_vehicle;
+package com.pj.project.tb_vehicle.vo;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;