Преглед изворни кода

结算单&订单增加关联关系

qzyReal пре 1 година
родитељ
комит
bd924264b4
23 измењених фајлова са 1256 додато и 890 уклоњено
  1. 1 1
      sp-core/sp-api/src/main/java/com/pj/api/client/level_one_server/LevelOneServerInterface.java
  2. 1 1
      sp-core/sp-api/src/main/java/com/pj/api/client/level_one_server/LevelOneServerInterfaceFallback.java
  3. 178 0
      sp-core/sp-api/src/main/java/com/pj/api/dto/HtPassCardDTO.java
  4. 2 0
      sp-core/sp-base/src/main/java/com/pj/current/dto/PCLoginUserInfo.java
  5. 4 0
      sp-core/sp-base/src/main/java/com/pj/current/mybatis/DataScope.java
  6. 17 0
      sp-core/sp-base/src/main/java/com/pj/current/mybatis/DataScopePermissionHandler.java
  7. 27 51
      sp-service/async-server/src/main/java/com/pj/task/HtByteTask.java
  8. 18 3
      sp-service/level-one-server/src/main/java/com/pj/ht_trade_settlement/HtTradeSettlement.java
  9. 55 0
      sp-service/level-one-server/src/main/java/com/pj/ht_trade_settlement/HtTradeSettlementApi.java
  10. 1 1
      sp-service/level-one-server/src/main/java/com/pj/ht_trade_settlement/HtTradeSettlementMapper.xml
  11. 57 46
      sp-service/level-one-server/src/main/java/com/pj/ht_trade_settlement/HtTradeSettlementService.java
  12. 95 77
      sp-service/level-one-server/src/main/java/com/pj/tb_cooperative/TbCooperativeService.java
  13. 4 0
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrder.java
  14. 0 20
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderAppController.java
  15. 4 2
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderController.java
  16. 587 540
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderService.java
  17. 3 0
      sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserService.java
  18. 17 0
      sp-service/sp-admin/src/main/java/com/pj/project4sp/admin/AdminTypeEnum.java
  19. 10 2
      sp-service/sp-admin/src/main/java/com/pj/project4sp/admin/SpAdmin.java
  20. 164 141
      sp-service/sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminController.java
  21. 2 2
      sp-service/sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminMapper.xml
  22. 5 2
      sp-service/sp-admin/src/main/java/com/pj/project4sp/admin4login/SpAccAdminController.java
  23. 4 1
      sp-service/sp-admin/src/main/java/com/pj/project4sp/admin4login/SpAccAdminService.java

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

@@ -121,7 +121,7 @@ public interface LevelOneServerInterface {
 
     /** 系统接收到航通接口信息:车辆已出一级市场 ,修改相对应的一级市场订单状态 **/
     @PostMapping("/TbOrder/rpc/orderFinish")
-    public boolean orderFinish(@RequestParam("billCode") String billCode);
+    public boolean orderFinish(@RequestBody HtPassCardDTO htPassCardRecord);
 
 
     /** 边民保存银行卡信息 */

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

@@ -187,7 +187,7 @@ public class LevelOneServerInterfaceFallback implements FallbackFactory<LevelOne
             }
 
             @Override
-            public boolean orderFinish(String billCode) {
+            public boolean orderFinish(HtPassCardDTO dto) {
                 return false;
             }
 

+ 178 - 0
sp-core/sp-api/src/main/java/com/pj/api/dto/HtPassCardDTO.java

@@ -0,0 +1,178 @@
+package com.pj.api.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Model: ht_pass_card_record -- 过卡记录表
+ * @author yzs 
+ */
+
+public class HtPassCardDTO  implements Serializable {
+
+	// ---------- 模块常量 ----------
+	/**
+	 * 序列化版本id 
+	 */
+	private static final long serialVersionUID = 1L;	
+
+
+	/**
+	 * 场所代码 
+	 */
+	private String areaNo;	
+
+	/**
+	 * 进出口标志 I:进口,E:出口 
+	 */
+	@JsonProperty("iEFlag")
+	private String iEFlag;	
+
+	/**
+	 * 场所名称 
+	 */
+	private String areaName;
+
+	/**
+	 * 通道代码 
+	 */
+	private String channelNo;	
+
+	/**
+	 * 通道名称 
+	 */
+	private String channelName;	
+
+	/**
+	 * 车牌号码 
+	 */
+	private String veNo;	
+
+	/**
+	 * 地磅重量 
+	 */
+	private Double crossWeight;	
+
+	/**
+	 * 卡 口 类 型 ( 1卡;2 卡;3 卡) 
+	 */
+	private String channelType;	
+
+	/**
+	 * 验放结果 
+	 */
+	private String checkResult;	
+
+	/**
+	 * 运输批次号 
+	 */
+	private String manifestId;	
+
+	/**
+	 * 单证代码 
+	 */
+	private String billCode;	
+
+	/**
+	 * 处理放行时间 
+	 */
+	private String checkTime;
+
+
+	public String getAreaNo() {
+		return areaNo;
+	}
+
+	public void setAreaNo(String areaNo) {
+		this.areaNo = areaNo;
+	}
+
+	public String getiEFlag() {
+		return iEFlag;
+	}
+
+	public void setiEFlag(String iEFlag) {
+		this.iEFlag = iEFlag;
+	}
+
+	public String getAreaName() {
+		return areaName;
+	}
+
+	public void setAreaName(String areaName) {
+		this.areaName = areaName;
+	}
+
+	public String getChannelNo() {
+		return channelNo;
+	}
+
+	public void setChannelNo(String channelNo) {
+		this.channelNo = channelNo;
+	}
+
+	public String getChannelName() {
+		return channelName;
+	}
+
+	public void setChannelName(String channelName) {
+		this.channelName = channelName;
+	}
+
+	public String getVeNo() {
+		return veNo;
+	}
+
+	public void setVeNo(String veNo) {
+		this.veNo = veNo;
+	}
+
+	public Double getCrossWeight() {
+		return crossWeight;
+	}
+
+	public void setCrossWeight(Double crossWeight) {
+		this.crossWeight = crossWeight;
+	}
+
+	public String getChannelType() {
+		return channelType;
+	}
+
+	public void setChannelType(String channelType) {
+		this.channelType = channelType;
+	}
+
+	public String getCheckResult() {
+		return checkResult;
+	}
+
+	public void setCheckResult(String checkResult) {
+		this.checkResult = checkResult;
+	}
+
+	public String getManifestId() {
+		return manifestId;
+	}
+
+	public void setManifestId(String manifestId) {
+		this.manifestId = manifestId;
+	}
+
+	public String getBillCode() {
+		return billCode;
+	}
+
+	public void setBillCode(String billCode) {
+		this.billCode = billCode;
+	}
+
+	public String getCheckTime() {
+		return checkTime;
+	}
+
+	public void setCheckTime(String checkTime) {
+		this.checkTime = checkTime;
+	}
+}

+ 2 - 0
sp-core/sp-base/src/main/java/com/pj/current/dto/PCLoginUserInfo.java

@@ -9,4 +9,6 @@ import java.io.Serializable;
 public class PCLoginUserInfo implements Serializable {
     private String loginId;
     private String loginName;
+    private String adminType;
+    private Long tradeAreaId;
 }

+ 4 - 0
sp-core/sp-base/src/main/java/com/pj/current/mybatis/DataScope.java

@@ -0,0 +1,4 @@
+package com.pj.current.mybatis;
+
+public interface DataScope {
+}

+ 17 - 0
sp-core/sp-base/src/main/java/com/pj/current/mybatis/DataScopePermissionHandler.java

@@ -0,0 +1,17 @@
+//package com.pj.current.mybatis;
+//
+//import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler;
+//import lombok.extern.slf4j.Slf4j;
+//import net.sf.jsqlparser.expression.Expression;
+//import org.aspectj.lang.annotation.Aspect;
+//import org.springframework.stereotype.Component;
+//
+//@Aspect
+//@Slf4j
+//@Component
+//public class DataScopePermissionHandler  implements DataPermissionHandler {
+//    @Override
+//    public Expression getSqlSegment(Expression where, String mappedStatementId) {
+//        return null;
+//    }
+//}

+ 27 - 51
sp-service/async-server/src/main/java/com/pj/task/HtByteTask.java

@@ -94,7 +94,7 @@ public class HtByteTask {
      * * 007=放行记录(过卡记录)
      */
     @Scheduled(cron = "*/9 * * * * ?")  // 测试阶段,每9秒扫描一次
-    private void htByteTask(){
+    private void htByteTask() {
         /*  测试mq */
 //        OrderDto orderDtoById = levelOneServerInterface.getOrderDtoById(8833342005355478419L);
 //        asyncServerInterface.sendLevelOneOrderDto(orderDtoById, DataType.DATA_TYPE_ONE.getCode());
@@ -118,7 +118,7 @@ public class HtByteTask {
             //数据处理完成状态
             boolean flag = false;
             // 根据类型匹配对象
-            switch (dataDto.getDataType()){
+            switch (dataDto.getDataType()) {
                 case "001":
                     //对象转换
                     HtPeopleDto peopleDto = JSONObject.parseObject(body, HtPeopleDto.class);
@@ -127,7 +127,7 @@ public class HtByteTask {
                     methodHtByteTask.updateHtByteInfo(flag, item, dataDto);
                     if (!flag) {
                         System.err.println("\n边民信息处理失败。 messageId = " + item.getMessageId() + "\n");
-                    }else {
+                    } else {
                         System.err.println("\n边民信息处理成功。 messageId = " + item.getMessageId() + "\n");
                     }
                     break;
@@ -139,7 +139,7 @@ public class HtByteTask {
                     methodHtByteTask.updateHtByteInfo(flag, item, dataDto);
                     if (!flag) {
                         System.err.println("\n店铺信息处理失败。 messageId = " + item.getMessageId() + "\n");
-                    }else {
+                    } else {
                         System.err.println("\n店铺信息处理完成。 messageId = " + item.getMessageId() + "\n");
                     }
                     break;
@@ -151,7 +151,7 @@ public class HtByteTask {
                     methodHtByteTask.updateHtByteInfo(flag, item, dataDto);
                     if (!flag) {
                         System.err.println("\n互助组信息处理失败。 messageId = " + item.getMessageId() + "\n");
-                    }else {
+                    } else {
                         System.err.println("\n互助组信息处理完成。 messageId = " + item.getMessageId() + "\n");
                     }
                     break;
@@ -163,7 +163,7 @@ public class HtByteTask {
                     methodHtByteTask.updateHtByteInfo(flag, item, dataDto);
                     if (!flag) {
                         System.err.println("\n边民合作社信息处理失败。 messageId = " + item.getMessageId() + "\n");
-                    }else {
+                    } else {
                         System.err.println("\n边民合作社信息处理完成。 messageId = " + item.getMessageId() + "\n");
                     }
                     break;
@@ -175,70 +175,46 @@ public class HtByteTask {
                     methodHtByteTask.updateHtByteInfo(flag, item, dataDto);
                     if (!flag) {
                         System.err.println("\n海关监管商品信息处理失败。 messageId = " + item.getMessageId() + "\n");
-                    }else {
+                    } else {
                         System.err.println("\n海关监管商品信息处理完成。 messageId = " + item.getMessageId() + "\n");
                     }
                     break;
                 case "006":
                     //交易结算信息
                     HtTradeSettlement importDeclarePeople = JSONObject.parseObject(body, HtTradeSettlement.class);
-                    if (importDeclarePeople==null||!importDeclarePeople.getIEFlag().toLowerCase().contains("i")) {
+                    if (importDeclarePeople == null || !importDeclarePeople.getIEFlag().toLowerCase().contains("i")) {
                         StaticLog.info("出口商品,暂时忽略:{}", body);
                         break;
                     }
+                    List<BordersListDto> bordersLists = JSON.parseArray(importDeclarePeople.getBordersList(), BordersListDto.class);
+                    //边民购买商品列表
+                    List<BorderBuyGoodsListDto> buyGoodsList = JSON.parseArray(importDeclarePeople.getBorderBuyGoodsList(), BorderBuyGoodsListDto.class);
+                    //保存航通监听记录
+                    TradeSettlementDto tradeSettlementDto = new TradeSettlementDto();
+                    BeanUtils.copyProperties(importDeclarePeople,tradeSettlementDto);
+                    tradeSettlementDto.setBordersListDtoList(bordersLists);
+                    tradeSettlementDto.setBorderBuyGoodsListDtoList(buyGoodsList);
                     importDeclarePeople.setFinishStatus(FinishStatus.FINISH_STATUS_ZERO.getCode()); // 默认待处理
                     importDeclarePeople.setCreateTime(new Date());
-                    //保存
-                    int insert = htTradeSettlementMapper.insert(importDeclarePeople);
-                    long primarykey = SP.publicMapper.getPrimarykey();
-                    if(insert == 1){
-                        //购买边民列表
-                        List<BordersListDto> bordersLists = JSON.parseArray(importDeclarePeople.getBordersList(), BordersListDto.class);
-                        //边民购买商品列表
-                        List<BorderBuyGoodsListDto> buyGoodsList = JSON.parseArray(importDeclarePeople.getBorderBuyGoodsList(), BorderBuyGoodsListDto.class);
-                        //保存航通监听记录
-                        methodHtByteTask.updateHtByteInfo(true,item,dataDto);
-                        TradeSettlementDto tradeSettlementDto = new TradeSettlementDto();
-                        BeanUtils.copyProperties(importDeclarePeople,tradeSettlementDto);
-                        tradeSettlementDto.setId(primarykey);
-                        tradeSettlementDto.setBordersListDtoList(bordersLists);
-                        tradeSettlementDto.setBorderBuyGoodsListDtoList(buyGoodsList);
-                        boolean b = FeignFactory.levelOneServerInterface.tradeSettlementDto(tradeSettlementDto);
-                        if(!b)throw new ServiceException("添加错误;");
-                        System.err.println("\n交易结算信息处理成功。 messageId = " + item.getMessageId() + "\n");
-                        break;
-                    }
-                    //保存航通监听记录
-                    methodHtByteTask.updateHtByteInfo(false,item,dataDto);
-                    System.err.println("\n交易结算信息处理失败。 messageId = " + item.getMessageId() + "\n");
+                    boolean b = FeignFactory.levelOneServerInterface.tradeSettlementDto(tradeSettlementDto);
+                    StaticLog.info("\n交易结算信息处理完成:{}。 messageId:{} = " ,item.getMessageId() ,b);
+                    methodHtByteTask.updateHtByteInfo(b, item, dataDto);
                     break;
                 case "007":
                     //放行记录(过卡记录)
-                    HtPassCardRecord htPassCardRecord = JSONObject.parseObject(body, HtPassCardRecord.class);
-                    htPassCardRecord.setFinishStatus(FinishStatus.FINISH_STATUS_ZERO.getCode()); // 默认待处理
-                    htPassCardRecord.setCreateTime(new Date());
-                    //保存
-                    int insert1 = htPassCardRecordMapper.insert(htPassCardRecord);
-                    methodHtByteTask.updateHtByteInfo(true,item,dataDto);
-                    if(insert1 == 1){
-                        System.err.println("\n放行记录(过卡记录)信息处理成功。 messageId = " + item.getMessageId() + "\n");
-                    }else {
-                        System.err.println("\n放行记录(过卡记录)信息处理失败。 messageId = " + item.getMessageId() + "\n");
-                    }
-
+                    HtPassCardDTO htPassCardDTO = JSONObject.parseObject(body, HtPassCardDTO.class);
                     //系统接收到航通过卡记录且卡口类型为'3卡':车辆已出一级市场, 修改相对应的一级市场订单状态
-                    if("3卡".equals(htPassCardRecord.getChannelType())) {
-                        FeignFactory.levelOneServerInterface.orderFinish(htPassCardRecord.getBillCode());
+                    if ("3卡".equals(htPassCardDTO.getChannelType())) {
+                        FeignFactory.levelOneServerInterface.orderFinish(htPassCardDTO);
                     }
-
                     break;
                 case "008":
                     HtImportOrderDto importOrderDto = JSONObject.parseObject(body, HtImportOrderDto.class);
                     boolean result = FeignFactory.levelOneServerInterface.importOrderDto(importOrderDto);
                     methodHtByteTask.updateHtByteInfo(result, item, dataDto);
-                    if(result){
+                    if (result) {
                         System.err.println("\n进口申报单同步处理成功。 messageId = " + item.getMessageId() + "\n");
-                    }else {
+                    } else {
                         System.err.println("\n进口申报单同步处理失败。 messageId = " + item.getMessageId() + "\n");
                     }
                     break;
@@ -248,10 +224,10 @@ public class HtByteTask {
                     htImportDeclarePeople.setFinishStatus(FinishStatus.FINISH_STATUS_ZERO.getCode());
                     htImportDeclarePeople.setCreateTime(new Date());
                     int insert2 = htImportDeclarePeopleMapper.insert(htImportDeclarePeople);
-                    methodHtByteTask.updateHtByteInfo(insert2 == 1,item,dataDto);
-                    if(insert2 == 1){
+                    methodHtByteTask.updateHtByteInfo(insert2 == 1, item, dataDto);
+                    if (insert2 == 1) {
                         System.err.println("\n进口申报单边民确认信息处理成功。 messageId = " + item.getMessageId() + "\n");
-                    }else {
+                    } else {
                         System.err.println("\n进口申报单边民确认信息处理失败。 messageId = " + item.getMessageId() + "\n");
                     }
                     break;

+ 18 - 3
sp-service/level-one-server/src/main/java/com/pj/ht_trade_settlement/HtTradeSettlement.java

@@ -1,15 +1,18 @@
 package com.pj.ht_trade_settlement;
 
+import com.alibaba.fastjson.annotation.JSONField;
 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 com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -77,7 +80,8 @@ public class HtTradeSettlement extends Model<HtTradeSettlement> implements Seria
 	/**
 	 * 商铺编码 
 	 */
-	private String shopNo;	
+	private String shopNo;
+
 
 	/**
 	 * 商铺名称 
@@ -194,23 +198,27 @@ public class HtTradeSettlement extends Model<HtTradeSettlement> implements Seria
 	/**
 	 * 购买边民列表[     { "platSeqNo": "进出境申报单预申报编号",        "borderName": "边民姓名", "idno": "身份证号",        "borderPutrecNo": "边民备案编号",        "settleBillNo": "结算单号", "buyAmount": "申报金额", "netWt": "净重", "grossWt": "毛重",        "buyQty": "申报数量", "buyQty1": "第一数量",        "buyQty2": "第二数量", "preIeportNo": "进出口预申报单号"     }] 
 	 */
+	@JSONField(serialize = false)
 	private String bordersList;	
 
 	/**
 	 * 边民购买商品列表[     { "platSeqNo": "进出境申报单预申报编号",        "borderName": "边民姓名",        "idno": "身份证号",           "borderPutrecNo": "边民备案编号",        "buyAmount": "申报金额",        "netWt": "净重",          "grossWt": "毛重",        "buyQty": "申报数量",        "buyQty1": "第一数量",        "buyQty2": "第二数量",        "preIeportNo": "进出口预申报单号",        "codeTs": "商品编码",        "goodsName": "商品名称"      }] 
 	 */
+	@JSONField(serialize = false)
 	private String borderBuyGoodsList;	
 
 	/**
 	 * 商铺卖货物列表[       { "platSeqNo": "进出境申报单预申报编号",           "gNo": "预申报编号", "codeTs": "商品编码",           "gName": "商品名称", "gModel": "规格型号",           "storageEnvm": "储存条件:常温 1:冷藏,2:冷冻:3",            "useTo": "用途:01 食用、02 工业用、03 药用、04 种用、05 饲用、06 其他",           "grossWt": "毛重",            "netWt": "净重",            "originCountry": "产销国",            "gQty": "货物数量",            "qty1": "第一数量",            "qty2": "第二数量",            "gUnit": "计量单位",            "unit1": "第一计量单位",            "unit2": "第二计量单位",            "declPrice": "单价",            "declTotal": "总价"       }] 
 	 */
+	@JSONField(serialize = false)
 	private String sellGoodsList;	
 
 
 	/**
 	 * 完成情况
 	 */
-	private Integer finishStatus;
+	private Integer finishStatus=0;
+	private String finishTime;
 
 	/**
 	 * 创建时间
@@ -221,6 +229,13 @@ public class HtTradeSettlement extends Model<HtTradeSettlement> implements Seria
 	 *
 	 */
 	private String preNo;
-
+	/**
+	 * 商家id
+	 */
+	private Long enterpriseId;
+	/**
+	 * 货值
+	 */
+	private BigDecimal totalPrice=BigDecimal.ZERO;
 
 }

+ 55 - 0
sp-service/level-one-server/src/main/java/com/pj/ht_trade_settlement/HtTradeSettlementApi.java

@@ -0,0 +1,55 @@
+package com.pj.ht_trade_settlement;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pj.api.dto.TradeSettlementDto;
+import com.pj.current.satoken.StpAPPUserUtil;
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+/**
+ * Controller: ht_trade_settlement -- 航通交易结算表
+ *
+ * @author yzs
+ */
+@RestController
+@RequestMapping("/app/HtTradeSettlement/")
+public class HtTradeSettlementApi {
+
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    HtTradeSettlementService htTradeSettlementService;
+
+    /**
+     * 查 - 根据id
+     */
+    @RequestMapping("getById")
+    public AjaxJson getById(String id) {
+        StpAPPUserUtil.isLogin();
+        HtTradeSettlement h = htTradeSettlementService.getById(id);
+        return AjaxJson.getSuccessData(h);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    @RequestMapping("getList")
+    public AjaxJson getList() {
+        SoMap so = SoMap.getRequestSoMap();
+        so.put("enterpriseId", StpAPPUserUtil.getAPPLoginInfo().getFk());
+        List<HtTradeSettlement> list = htTradeSettlementService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+
+}

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

@@ -52,7 +52,7 @@
 			<if test=' this.has("goodsNames") '> and goods_names like concat('%',#{goodsNames},'%') </if>
 			<if test=' this.has("bordersList") '> and borders_list = #{bordersList} </if>
 			<if test=' this.has("borderBuyGoodsList") '> and border_buy_goods_list = #{borderBuyGoodsList} </if>
-			<if test=' this.has("sellGoodsList") '> and sell_goods_list = #{sellGoodsList} </if>
+			<if test=' this.has("enterpriseId") '> and enterprise_id = #{enterpriseId} </if>
 			<if test=' this.has("id") '> and id = #{id} </if>
 		</where>
 		order by

+ 57 - 46
sp-service/level-one-server/src/main/java/com/pj/ht_trade_settlement/HtTradeSettlementService.java

@@ -1,6 +1,8 @@
 package com.pj.ht_trade_settlement;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.json.JSONUtil;
+import cn.hutool.log.StaticLog;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -27,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -98,68 +101,76 @@ public class HtTradeSettlementService extends ServiceImpl<HtTradeSettlementMappe
      * 远程调用: 添加大订单时同时生成边民订单
      */
     public boolean tradeSettlementDto(TradeSettlementDto tradeSettlementDto) {
+        StaticLog.info("接收到航通结算订单:{}", JSONUtil.toJsonStr(tradeSettlementDto));
         HtTradeSettlement htTradeSettlement = new HtTradeSettlement();
         BeanUtils.copyProperties(tradeSettlementDto, htTradeSettlement);
+        TbShop tbShop = tbShopService.findByCode(tradeSettlementDto.getShopNo());
+        if (tbShop == null) {
+            StaticLog.error("结算单异常,找不到店铺信息:{}", tradeSettlementDto.getShopNo());
+        } else {
+            htTradeSettlement.setEnterpriseId(tbShop.getEnterpriseId());
+        }
         int insert = htTradeSettlementMapper.insert(htTradeSettlement);
         //获取边民订单集合
         List<BordersListDto> bordersListDtoList = tradeSettlementDto.getBordersListDtoList();
 
         //获取订单商品列表集合
-		List<BorderBuyGoodsListDto> borderBuyGoodsListDtoList = tradeSettlementDto.getBorderBuyGoodsListDtoList();
+        List<BorderBuyGoodsListDto> borderBuyGoodsListDtoList = tradeSettlementDto.getBorderBuyGoodsListDtoList();
 
         TbTradeArea tbTradeArea = tbTradeAreaService.updateHandler(tradeSettlementDto.getFieldCode(), tradeSettlementDto.getFieldName());
-        TbShop tbShop = tbShopService.findByCode(tradeSettlementDto.getShopNo());
-        Date applyTime= DateUtil.parseDateTime( tradeSettlementDto.getDeclTime());
-		bordersListDtoList.forEach(item -> {
-			//开始创建边民订单
-			TbOrder tbOrder = new TbOrder();
-			//航通字段
-			BeanUtils.copyProperties(item, tbOrder);
-
-			tbOrder.setCreateTime(new Date()).setPreNo(item.getPreNo())
-					.setTradeNo(SystemObject.getREFcode("YJSCDD", new Date()))
-					.setTradeAreaId(tbTradeArea.getId()).setTradeAreaName(tbTradeArea.getName());
-			tbOrder.setTotalWeight(item.getGrossWt()).setTotalPrice(item.getBuyAmount());
-
-			tbOrder.setApply(ApplyStatus.APPLY_STATUS_ONE.getCode()).setApplyTime(applyTime).setVeNo(tradeSettlementDto.getVeNo());
-			tbOrder.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode());
-			tbOrder.setResaleStatus(ResaleStatus.RESALE_STATUS_ZERO.getCode());
-			tbOrder.setFinishStatus(OrderStatus.ORDER_STATUS_ZERO.getCode());
+        Date applyTime = new Date(Long.parseLong(tradeSettlementDto.getDeclTime()));
+        htTradeSettlement.setDeclTime(DateUtil.format(applyTime,"yyyy-MM-dd HH:mm:ss"));
+        BigDecimal totalPrice = BigDecimal.ZERO;
+        for (BordersListDto item : bordersListDtoList) {//开始创建边民订单
+            totalPrice = totalPrice.add(BigDecimal.valueOf(item.getBuyAmount()));
+            TbOrder tbOrder = new TbOrder();
+            //航通字段
+            BeanUtils.copyProperties(item, tbOrder);
+            tbOrder.setSaleMainId(htTradeSettlement.getId());
+            tbOrder.setCreateTime(new Date()).setPreNo(item.getPreNo())
+                    .setTradeNo(SystemObject.getREFcode("YJSCDD", new Date()))
+                    .setTradeAreaId(tbTradeArea.getId()).setTradeAreaName(tbTradeArea.getName());
+            tbOrder.setTotalWeight(item.getGrossWt()).setTotalPrice(item.getBuyAmount());
+
+            tbOrder.setApply(ApplyStatus.APPLY_STATUS_ONE.getCode()).setApplyTime(applyTime).setVeNo(tradeSettlementDto.getVeNo());
+            tbOrder.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode());
+            tbOrder.setResaleStatus(ResaleStatus.RESALE_STATUS_ZERO.getCode());
+            tbOrder.setFinishStatus(OrderStatus.ORDER_STATUS_ZERO.getCode());
             //申报单类型,用以后续判断当前订单是否是委托单
             tbOrder.setDeclareType(tradeSettlementDto.getDeclareType());
 
-			//根据边民身份证号获取边民的订单商品列表(目前逻辑为一个边民对应一个商品)
-			List<BorderBuyGoodsListDto> collect = borderBuyGoodsListDtoList.stream().filter(borderBuyGoods -> item.getIdno().equals(borderBuyGoods.getIdno())).collect(Collectors.toList());
-			if (collect.size() > 0) {
-				//根据商品编号查询商品表
-				TbGoods tbGoods = tbGoodsService.findByCode(collect.get(0).getCodeTs());
-				if(null != tbGoods) {
-					tbOrder.setGoodsId(tbGoods.getId());
-					tbOrder.setGoodsNames(tbGoods.getName());
-					tbOrder.setGoodsUnit(tbGoods.getUnit());
-				}
-			}
-			//根据身份证查询边民
-			TbPeople tbPeople = tbPeopleService.findByIdCarNo(item.getIdno());
-			if (tbPeople != null) {
-				tbOrder.setBuyUserId(tbPeople.getId());
-				tbOrder.setBuyUserName(tbPeople.getName());
-				tbOrder.setBuyUserType(String.valueOf(tbPeople.getRole()));
-				tbOrder.setGroupId(tbPeople.getGroupId());
-			}
-			//商品店铺信息
-			if (tbShop != null)
-				tbOrder.setEnterpriseId(tbShop.getEnterpriseId()).setEnterpriseName(tbShop.getEnterpriseName());
+            //根据边民身份证号获取边民的订单商品列表(目前逻辑为一个边民对应一个商品)
+            List<BorderBuyGoodsListDto> collect = borderBuyGoodsListDtoList.stream().filter(borderBuyGoods -> item.getIdno().equals(borderBuyGoods.getIdno())).collect(Collectors.toList());
+            if (collect.size() > 0) {
+                //根据商品编号查询商品表
+                TbGoods tbGoods = tbGoodsService.findByCode(collect.get(0).getCodeTs());
+                if (null != tbGoods) {
+                    tbOrder.setGoodsId(tbGoods.getId());
+                    tbOrder.setGoodsNames(tbGoods.getName());
+                    tbOrder.setGoodsUnit(tbGoods.getUnit());
+                }
+            }
+            //根据身份证查询边民
+            TbPeople tbPeople = tbPeopleService.findByIdCarNo(item.getIdno());
+            if (tbPeople != null) {
+                tbOrder.setBuyUserId(tbPeople.getId());
+                tbOrder.setBuyUserName(tbPeople.getName());
+                tbOrder.setBuyUserType(String.valueOf(tbPeople.getRole()));
+                tbOrder.setGroupId(tbPeople.getGroupId());
+            }
+            //商品店铺信息
+            if (tbShop != null)
+                tbOrder.setEnterpriseId(tbShop.getEnterpriseId()).setEnterpriseName(tbShop.getEnterpriseName());
 
             int result = tbOrderMapper.insert(tbOrder);
-
             //发送短信
-            if(result == 1) {
-                String content="您好,您的[边民互市订单]已经生成,订单商品是[" + tbOrder.getGoodsNames() + "]。请前往app进行交易确认";
-                SystemObject.smsFactory.handler().sendSMS(tbPeople.getPhone(),content);
+            if (result == 1) {
+                String content = "您好,您的[边民互市订单]已经生成,订单商品是[" + tbOrder.getGoodsNames() + "]。请前往app进行交易确认";
+                SystemObject.smsFactory.handler().sendSMS(tbPeople.getPhone(), content);
             }
-
-		});
+        }
+        htTradeSettlement.setTotalPrice(totalPrice);
+        this.updateById(htTradeSettlement);
 
         return insert == 1;
     }

+ 95 - 77
sp-service/level-one-server/src/main/java/com/pj/tb_cooperative/TbCooperativeService.java

@@ -22,88 +22,106 @@ import java.util.List;
 
 /**
  * Service: tb_cooperative -- 合作社
+ *
  * @author lsw
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
-public class TbCooperativeService extends ServiceImpl<TbCooperativeMapper,TbCooperative> implements IService<TbCooperative>{
+public class TbCooperativeService extends ServiceImpl<TbCooperativeMapper, TbCooperative> implements IService<TbCooperative> {
 
-	/** 底层 Mapper 对象 */
-	@Autowired
+    /**
+     * 底层 Mapper 对象
+     */
+    @Autowired
     TbCooperativeMapper tbCooperativeMapper;
-	@Resource
-	private TbTradeAreaService tbTradeAreaService;
-
-	/** 增 */
-	void add(TbCooperative t){
-		t.setCreateTime(new Date());
-		t.setCreateName(StpUserUtil.getPCLoginInfo().getLoginName());
-		save(t);
-	}
-
-	/** 删 */
-	void delete(Long id){
-		removeById(id);
-	}
-
-	/** 改 */
-	void update(TbCooperative t){
-		t.setUpdateTime(new Date());
-		t.setUpdateName(StpUserUtil.getPCLoginInfo().getLoginName());
-		updateById(t);
-
-	}
-
-	/** 查 */
-	TbCooperative getById(Long id){
-		return super.getById(id);
-	}
-
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
-	List<TbCooperative> getList(SoMap so) {
-		return tbCooperativeMapper.getList(so);
-	}
-
-
-	/*------            正常业务👆👆    rpc远程调用👇👇                         -----------*/
-
-	public CooperativeDto getCooperativeById(Long id) {
-		TbCooperative cooperative = tbCooperativeMapper.selectById(id);
-		CooperativeDto dto = new CooperativeDto();
-		BeanUtils.copyProperties(cooperative, dto);
-		return dto;
-	}
-
-	/** 远程调用: 对合作社信息进行事务处理 */
-	public boolean cooperativeDto(HtCooperativeDto cooperativeDto){
-		TbCooperative tbCooperative = new TbCooperative();
-		BeanUtils.copyProperties(cooperativeDto,tbCooperative);
-		tbCooperative.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode());
-		tbCooperative.setCreateTime(new Date());
-
-		TbTradeArea tbTradeArea = tbTradeAreaService.updateHandler(cooperativeDto.getFieldCode(), "");
-		tbCooperative.setTradeAreaId(tbTradeArea.getId()).setTradeAreaName(tbTradeArea.getName());
-		//查询是否有数据
-		List<TbCooperative> tbCooperativeList = tbCooperativeMapper.selectList(new LambdaQueryWrapper<TbCooperative>().eq(TbCooperative::getPlatSeqNo, cooperativeDto.getPlatSeqNo()));
-		if(tbCooperativeList.size() == 0){
-			//新增
-			boolean save = this.save(tbCooperative);
-			return save;
-		}
-		//修改
-		BeanUtils.copyProperties(tbCooperativeList.get(0),tbCooperative);
-		int i = tbCooperativeMapper.updateById(tbCooperative);
-		return i == 1;
-	}
-
-	/** 合作社保存银行卡信息 */
-	public boolean saveBankByCooperative(Long id,String bankName,String bankAccount) {
-		LambdaUpdateWrapper<TbCooperative> wrapper = new LambdaUpdateWrapper<>();
-		wrapper.set(TbCooperative::getBankName, bankName);
-		wrapper.set(TbCooperative::getBankAccount, bankAccount);
-		wrapper.eq(TbCooperative::getId, id);
-
-		return update(wrapper);
-	}
+    @Resource
+    private TbTradeAreaService tbTradeAreaService;
+
+    /**
+     * 增
+     */
+    void add(TbCooperative t) {
+        t.setCreateTime(new Date());
+        t.setCreateName(StpUserUtil.getPCLoginInfo().getLoginName());
+        save(t);
+    }
+
+    /**
+     * 删
+     */
+    void delete(Long id) {
+        removeById(id);
+    }
+
+    /**
+     * 改
+     */
+    void update(TbCooperative t) {
+        t.setUpdateTime(new Date());
+        t.setUpdateName(StpUserUtil.getPCLoginInfo().getLoginName());
+        updateById(t);
+
+    }
+
+    /**
+     * 查
+     */
+    TbCooperative getById(Long id) {
+        return super.getById(id);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    List<TbCooperative> getList(SoMap so) {
+        return tbCooperativeMapper.getList(so);
+    }
+
+
+    /*------            正常业务👆👆    rpc远程调用👇👇                         -----------*/
+
+    public CooperativeDto getCooperativeById(Long id) {
+        TbCooperative cooperative = tbCooperativeMapper.selectById(id);
+        CooperativeDto dto = new CooperativeDto();
+        BeanUtils.copyProperties(cooperative, dto);
+        return dto;
+    }
+
+    /**
+     * 远程调用: 对合作社信息进行事务处理
+     */
+    public boolean cooperativeDto(HtCooperativeDto cooperativeDto) {
+        TbCooperative tbCooperative = new TbCooperative();
+        BeanUtils.copyProperties(cooperativeDto, tbCooperative);
+        tbCooperative.setDeleteStatus(DeleteStatus.DELETE_STATUS_ON.getCode());
+        TbTradeArea tbTradeArea = tbTradeAreaService.updateHandler(cooperativeDto.getFieldCode(), "");
+        tbCooperative.setTradeAreaId(tbTradeArea.getId()).setTradeAreaName(tbTradeArea.getName());
+        //查询是否有数据
+        List<TbCooperative> tbCooperativeList = tbCooperativeMapper
+                .selectList(new LambdaQueryWrapper<TbCooperative>().eq(TbCooperative::getOrgSccd, cooperativeDto.getOrgSccd()));
+        if (tbCooperativeList.size() == 0) {
+            tbCooperative.setCreateTime(new Date());
+            //新增
+            boolean save = this.save(tbCooperative);
+            return save;
+        }
+        tbCooperative.setName(cooperativeDto.getCorrepName());
+        //修改
+        BeanUtils.copyProperties(tbCooperativeList.get(0), tbCooperative);
+        int i = tbCooperativeMapper.updateById(tbCooperative);
+        return i == 1;
+    }
+
+    /**
+     * 合作社保存银行卡信息
+     */
+    public boolean saveBankByCooperative(Long id, String bankName, String bankAccount) {
+        LambdaUpdateWrapper<TbCooperative> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.set(TbCooperative::getBankName, bankName);
+        wrapper.set(TbCooperative::getBankAccount, bankAccount);
+        wrapper.eq(TbCooperative::getId, id);
+
+        return update(wrapper);
+    }
 
 }

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

@@ -360,6 +360,10 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	 * 订单完成状态(0=未完成,1=已完成)
 	 */
 	private Integer finishStatus;
+	/**
+	 * 完成时间
+	 */
+	private String finishTime;
 
 	/**
 	 * 是否转售(0=未转售,1=已转售,2=转售中)

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

@@ -26,27 +26,7 @@ public class TbOrderAppController {
 	TbOrderService tbOrderService;
 
 
-	/** 删 - 根据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("delete")
-	public AjaxJson delete(Long id){
-		tbOrderService.delete(id);
-		return AjaxJson.getSuccess();
-	}
 
-	/** 改 */
-	@RequestMapping("update")
-	public AjaxJson update(TbOrder t){
-		tbOrderService.update(t);
-		return AjaxJson.getSuccess();
-	}
 
 	/** 查 - 根据id */
 	@RequestMapping("getById")

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

@@ -1,6 +1,8 @@
 package com.pj.tb_order;
 
 import java.util.List;
+
+import com.pj.api.dto.HtPassCardDTO;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -81,8 +83,8 @@ public class TbOrderController {
 
 	/** 系统接收到航通接口信息:车辆已出一级市场 ,相对应的一级市场订单状态修改 **/
 	@RequestMapping("rpc/orderFinish")
-	public boolean orderFinish(@RequestParam("billCode") String billCode) {
-		return tbOrderService.orderFinish(billCode);
+	public boolean orderFinish(HtPassCardDTO htPassCardDTO) {
+		return tbOrderService.orderFinish(htPassCardDTO);
 	}
 
 }

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

@@ -15,6 +15,8 @@ import com.pj.current.config.SystemObject;
 import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.enummj.*;
+import com.pj.ht_trade_settlement.HtTradeSettlement;
+import com.pj.ht_trade_settlement.HtTradeSettlementService;
 import com.pj.tb_enterprise.TbEnterprise;
 import com.pj.tb_enterprise.TbEnterpriseMapper;
 import com.pj.tb_goods_transit.TbGoodsTransit;
@@ -36,554 +38,599 @@ 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 org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.annotation.Resource;
 
 /**
  * Service: tb_order -- 订单表
+ *
  * @author loovi
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
-public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implements IService<TbOrder>{
-
-	/** 底层 Mapper 对象 */
-	@Autowired
-	TbOrderMapper tbOrderMapper;
-
-	/** 互市组 */
-	@Autowired
-	private TbPeopleService tbPeopleService;
-	@Autowired
-	TbOrderPeopleConfirmMapper tbOrderPeopleConfirmMapper;
-	@Autowired
-	private MethodOrderService methodOrderService;
-
-	@Autowired
-	private TbGoodsTransitMapper tbGoodsTransitMapper;
-	@Autowired
-	private TbGoodsTransitService tbGoodsTransitService;
-	@Autowired
-	private LevelOneServerInterface levelOneServerInterface;
-	@Autowired
-	private TbEnterpriseMapper tbEnterpriseMapper;
-	@Autowired
-	private AsyncServerInterface asyncServerInterface;
-	@Autowired
-	private TbPeopleMapper tbPeopleMapper;
-
-	/**
-	 * 远程调用
-	 */
-	@Autowired
-	private AdminInterface adminInterface;
-
-	/** 删 */
-	void delete(Long id){
-		removeById(id);
-	}
-
-	/** 改 */
-	void update(TbOrder t){
-		updateById(t);
-
-	}
-
-	/** 查 */
-	TbOrder getById(Long id){
-		return super.getById(id);
-	}
-
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
-	List<TbOrder> getList(SoMap so) {
-		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("订单状态异常!");
-		//如果该订单商户已叫车则无法进行取消
-		if(tbOrder.getCallCarStatus() == 1 || tbOrder.getCallCarStatus() == 2){
-			TbEnterprise enterprise = tbEnterpriseMapper.selectById(appLoginInfo.getFk());
-			String phone = null;
-			if(enterprise != null)phone = enterprise.getOwnerTel();
-			throw new ServiceException("您的订单单号为[ " + tbOrder.getTradeNo() + " ]商户已叫车,无法进行取消,请联系商户电话[ " + phone + " ]进行取消。");
-		}
-		//将状态设置已取消
-		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);
-			//给互助组下属所有人发送取消的message
-			PeopleDto peopleDto = levelOneServerInterface.getRpcById(appLoginInfo.getFk());
-			methodOrderService.sendGroupMessage(peopleDto.getGroupId(),peopleDto.getName(),false);
-			return updated == 1;
-		}
-		return false;
-	}
-
-
-	/**
-	 * 查集合 - 根据条件(参数为空时代表忽略指定条件)
-	 * APP专用 与该订单相关的任何人员能看
-	 * @param so
-	 * @return
-	 */
-	List<TbOrder> getAPPList(SoMap so) {
-		//获取登录用户,登录的用户也许边民,互市组组长,一级市场商家
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-
-		//与订单相关的人能看
-		List<TbOrder> tbOrderList = methodOrderService.checkType(appLoginInfo.getUserType(),appLoginInfo.getFk(),so);
- 		return tbOrderList;
-	}
-
-	/** 获取当前登陆人订单集合 */
-	public List<TbOrder> selectSelfOrders(SoMap so) {
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-		if(appLoginInfo == null || appLoginInfo.getLoginId() == null)throw new RuntimeException("当前登陆用户信息已失效!");
-		so.put("buyUserId",appLoginInfo.getLoginId());
-		so.put("deleteStatus", DeleteStatus.DELETE_STATUS_ON.getCode());
-		return tbOrderMapper.getList(so);
-	}
-
-	/** 查 转售列表:边民组长查看已完结订单,包括已转售/未转售 */
-	List<TbOrder> getResaleOrders() {
-		//获取app登录用户
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-		if(appLoginInfo == null)throw new RuntimeException("当前登陆用户信息已失效!");
-
-		LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
-		//订单状态(0=未完成,1=已完成)
-		wrapper.eq(TbOrder::getFinishStatus, 1);
-		wrapper.eq(TbOrder::getBuyUserId, appLoginInfo.getLoginId());
-		List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
-
-		return tbOrders;
-	}
-
-	/** 改 转售状态:根据订单Id把订单改为已转售 */
-	boolean updateResaleStatus(Long orderId) {
-		LambdaUpdateWrapper<TbOrder> wrapper = new LambdaUpdateWrapper<>();
-		wrapper.set(TbOrder::getResaleStatus, 1);
-		wrapper.eq(TbOrder::getId, orderId);
-
-		return this.update(wrapper);
-	}
-
-	boolean updateEnterpriseConfirm(TbOrder order) {
-
-		// 商户拒绝接单后把商户确认状态改为否,并把商品发布表状态恢复为默认值
-		if (2 == order.getEnterpriseConfirm()) {
-			LambdaUpdateWrapper<TbGoodsTransit> wrapper = new LambdaUpdateWrapper<>();
-			//商品未被下单
-			wrapper.set(TbGoodsTransit::getIsOrders, OrderStatus.ORDER_STATUS_ZERO.getCode());
-			//商品在售
-			wrapper.set(TbGoodsTransit::getGoodsStatus, GoodsStatus.GOODS_STATUS_ON.getCode());
-
-			wrapper.eq(TbGoodsTransit::getId, order.getGoodsId());
-			boolean update = tbGoodsTransitService.update(wrapper);
-
-		}
-
-		TbOrder tbOrder=tbOrderMapper.selectById(order.getId());
-		//todo:给组长发一条商家消息
-		String message = order.getEnterpriseConfirm() == 1 ? "商户已确认,请及时发货。" : "已被商户拒绝,请重新接单或换一家商品。";
-		MessageDto dto = new MessageDto();
-		dto.setUrl("/pages/market/one/leader/order");
-		dto.setUserId(tbOrder.getBuyUserId());
-		dto.setContents("你接单的《" + tbOrder.getGoodsNames() + "》" + message);
-		adminInterface.messageSave(dto);
-
-		// 修改订单表的商家确认状态
-		order.setGoodsId(null);
-		boolean flag = updateById(order);
-
-		return flag;
-	}
-
-	/**
-	 *  查看订单详情
-	 * @param orderId  一级市场订单ID
-	 * @return 订单的vo
-	 */
-	public OrderVo orderDetail(Long orderId){
-		//查询订单
-		TbOrder order = tbOrderMapper.selectById(orderId);
-		if(order == null)throw new ServiceException("订单信息异常!");
-		//执行封装
-		OrderVo orderVo = new OrderVo();
-		//数据拷贝
-		BeanUtils.copyProperties(order,orderVo);
-		return orderVo;
-	}
-
-	/**
-	 * 根据订单ID查询边民确认订单信息
-	 * @param orderId
-	 * @return
-	 */
-	public List<TbOrderPeopleConfirm> selectPeopleConfirmByOrderId(Long orderId){
-		List<TbOrderPeopleConfirm> tbOrderPeopleConfirms = tbOrderPeopleConfirmMapper.selectList(new LambdaQueryWrapper<TbOrderPeopleConfirm>().eq(TbOrderPeopleConfirm::getOrderId, orderId));
-		if(tbOrderPeopleConfirms.size() > 0){
-			tbOrderPeopleConfirms.forEach(item -> {
-				item.setOrderId(null);
-				item.setGroupId(null);
-				item.setId(null);
-				item.setPeopleId(null);
-			});
-		}
-		return tbOrderPeopleConfirms;
-	}
-
-	public List<PeopleConfirmVo> getPeopleState(SoMap so) {
-		List<PeopleConfirmVo> peopleConfirmList = new ArrayList<>();
-
-		// 获取当前订单所有已确认的边民
-		List<TbOrderPeopleConfirm> peopleConfirmlist = tbOrderPeopleConfirmMapper.getList(so);
-		Set<Long> peopleIds = new HashSet<>();
-		for (TbOrderPeopleConfirm tbOrderPeopleConfirm: peopleConfirmlist) {
-			peopleIds.add(tbOrderPeopleConfirm.getPeopleId());
-		}
-
-		// 获取组内所有边民
-		List<TbPeople> peopleList = tbPeopleService.getList(so);
-		for (TbPeople people : peopleList) {
-			PeopleConfirmVo peopleConfirmVo = new PeopleConfirmVo();
-			peopleConfirmVo.setOrderId(so.getLong("orderId"));
-			peopleConfirmVo.setGroupId(so.getLong("groupId"));
-			peopleConfirmVo.setPeopleId(people.getId());
-			peopleConfirmVo.setPeopleName(people.getName());
-
-			// 订单确认状态
-			if(peopleIds.contains(people.getId()) || 2 == people.getRole()) {
-				peopleConfirmVo.setOrderStatus(1);
-			} else {
-				peopleConfirmVo.setOrderStatus(0);
-			}
-			// 进境申报状态
-			peopleConfirmVo.setEntryStatus(0);
-			// 进口申报状态
-			peopleConfirmVo.setImportStatus(0);
-
-			peopleConfirmList.add(peopleConfirmVo);
-		}
-		return peopleConfirmList;
-	}
-
-	/**
-	 * 接收订单推送消息,
-	 * 边民进行交易确认,
-	 * 支付申请,刷脸认
-	 * 证,系统发起进行交
-	 * 易
-	 */
-	public void receiveOrderMessageFromHT(){
-		//todo: 8月27日 接收航通申报单推送消息
-		//1. 获取订单,并将订单保存到订单表
-
-		//2 根据订单内容获取边民集合,创建订单监听表,将该订单内需要完成的边民数逐条保存到监听表内
-
-		//3. 发起支付申请 , 刷脸认证
-
-		//4. 第3步完成且通过后,调用银行的sdk,验证边民的支付信息,由银行将钱转入第三方监管账户,并给出回执
-
-		//5. 拿到银行回执,判断其状态,修改监听表内该订单的完成情况
-
-		//6. 如果监听表内全部边民完成验证,则更新订单表该订单的边民验证完成情况
-
-		//7. todo: 如果订单表的边民验证状态为已完成,将信息同步至航通
-
-	}
-
-
-	/**
-	 * app首页获取边民未确认订单
-	 */
-	public OrderVo getNoConfirmOrder() {
-		//获取登录人
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-
-		LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
-		wrapper.eq(TbOrder::getBuyUserId, appLoginInfo.getFk());
-		wrapper.eq(TbOrder::getPeopleConfirmStatus, ConfirmStatus.CONFIRM_STATUS_ZERO.getCode())//订单待确认
-				.or().eq(TbOrder::getCooperEntrustStatus, ConfirmStatus.CONFIRM_STATUS_ZERO.getCode())//互助委托待确认
-				.or().eq(TbOrder::getApplyConfirmStatus, ConfirmStatus.CONFIRM_STATUS_ZERO.getCode());//进口申报待确认
-		wrapper.orderByDesc(TbOrder::getCreateTime);
-		wrapper.orderByDesc(TbOrder::getUpdateTime);
-
-		List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
-		if(tbOrders.size() > 0) {
-			TbOrder order = tbOrders.get(0);
-
-			OrderVo orderVo = new OrderVo();
-			BeanUtils.copyProperties(order,orderVo);
-			return orderVo;
-		}
-		return null;
-	}
-
-	/**
-	 *  获取一级市场边民订单的所有确认状态
-	 * @param orderId 一级市场订单表ID
-	 */
-	public ConfirmVo getConfirmStatus(Long orderId) {
-		return tbOrderMapper.getConfirmStatus(orderId);
-	}
-
-	/**
-	 *  边民订单确认
-	 * @param orderId 一级市场订单表ID
-	 */
-	public boolean confirmOrder(Long orderId){
-		TbOrder tbOrder=this.getById(orderId);
-		if (tbOrder==null){
-			throw new AjaxError("订单不存在");
-		}
-		// TODO: 2023/8/28 边民发起支付申请,调用银行接口:验证边民支付信息,将货款先存入银行第三方账户,并给出回执
-		// 银行返回支付回执为"交易成功"时,方法往下执行
-
-		//获取登录人
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-
-		// TODO: 2023/8/29 更新状态保存交易记录
-		LambdaUpdateWrapper<TbOrder> wrapper = new LambdaUpdateWrapper<>();
-		wrapper.set(TbOrder::getPeopleConfirmStatus, ConfirmStatus.CONFIRM_STATUS_ONE.getCode());//边民确认:1=确认
-		wrapper.set(TbOrder::getPeopleConfirmTime, new Date());
-		wrapper.set(TbOrder::getUpdateBy, appLoginInfo.getLoginId());
-		wrapper.set(TbOrder::getUpdateName, appLoginInfo.getLoginName());
-		wrapper.set(TbOrder::getUpdateTime, new Date());
-		wrapper.eq(TbOrder::getId, orderId);
-		boolean result = update(wrapper);
-
-		if(result && "1".equals(tbOrder.getDeclareType())) {
-			// TODO: 2023/8/29 调用航通009接口,发送信息
-			sendConfirmMsgToHt(tbOrder);
-		}
-		return result;
-	}
-
-	/**
-	 *  互助委托申报确认
-	 * @param orderId 一级市场订单表ID
-	 */
-	public boolean cooperOrder(Long orderId){
-		//获取登录人
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-
-		LambdaUpdateWrapper<TbOrder> wrapper = new LambdaUpdateWrapper<>();
-		wrapper.set(TbOrder::getCooperEntrustStatus, ConfirmStatus.CONFIRM_STATUS_ONE.getCode());//互助委托申报确认:1=确认
-		wrapper.set(TbOrder::getCooperEntrustTime, new Date());
-
-		wrapper.set(TbOrder::getUpdateBy, appLoginInfo.getLoginId());
-		wrapper.set(TbOrder::getUpdateName, appLoginInfo.getLoginName());
-		wrapper.set(TbOrder::getUpdateTime, new Date());
-
-		wrapper.eq(TbOrder::getId, orderId);
-		boolean result = update(wrapper);
-
-		return result;
-	}
-
-	/**
-	 *  边民进口申报确认
-	 * @param orderId 一级市场订单表ID
-	 */
-	public boolean applyOrder(Long orderId){
-		TbOrder tbOrder=this.getById(orderId);
-		if (tbOrder==null){
-			throw new AjaxError("订单不存在");
-		}
-		//获取登录人
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-
-		LambdaUpdateWrapper<TbOrder> wrapper = new LambdaUpdateWrapper<>();
-		wrapper.set(TbOrder::getApplyConfirmStatus, ConfirmStatus.CONFIRM_STATUS_ONE.getCode());//进口申报确认:1=确认
-		wrapper.set(TbOrder::getApplyConfirmTime, new Date());
-
-		wrapper.set(TbOrder::getUpdateBy, appLoginInfo.getLoginId());
-		wrapper.set(TbOrder::getUpdateName, appLoginInfo.getLoginName());
-		wrapper.set(TbOrder::getUpdateTime, new Date());
-
-		wrapper.eq(TbOrder::getId, orderId);
-		boolean result = update(wrapper);
-
-		if(result && !"1".equals(tbOrder.getDeclareType())
-				&& tbOrder.getPeopleConfirmStatus() == 1 && tbOrder.getCooperEntrustStatus() == 1) {
-			// TODO: 2023/8/29 调用航通009接口,发送信息
-			sendConfirmMsgToHt(tbOrder);
-		}
-		return result;
-	}
-
-	/**
-	 * 发送009信息到航通
-	 */
-	private void sendConfirmMsgToHt(TbOrder tbOrder){
-		TbPeople tbPeople=tbPeopleService.getById(tbOrder.getBuyUserId());
-		PeopleConfirmDTO peopleConfirmDTO=new PeopleConfirmDTO();
-		peopleConfirmDTO.setBorderName(tbOrder.getBuyUserName());
-		peopleConfirmDTO.setIdno(tbPeople.getIdCard());
-		peopleConfirmDTO.setSettleBillNo(tbOrder.getSettleBillNo());
-		peopleConfirmDTO.setPreIeportNo(tbOrder.getPreIeportNo());
-		FeignFactory.asyncServerInterface.sendConfirm(peopleConfirmDTO);
-	}
-
-
-
-	/**
-	 *  判断当前边民的边民订单是否委托
-	 */
-	public OrderVo getByDeclareType() {
-		APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
-		TbPeople tbPeople = tbPeopleMapper.selectById(appLoginInfo.getFk());
-		if(tbPeople == null)throw new ServiceException("当前用户不存在,请联系管理员!");
-
-		SoMap so = new SoMap();
-		so.put("buyUserId",appLoginInfo.getFk());
-		so.put("deleteStatus",DeleteStatus.DELETE_STATUS_ON.getCode());
-		List<TbOrder> orderList = tbOrderMapper.getList(so);
-
-		OrderVo orderVo = new OrderVo();
-
-		//被委托订单,并且三个状态中有一个未确认
-		List<TbOrder> declareList2 = orderList.stream().filter(item -> !"1".equals(item.getDeclareType()) &&
-				(item.getPeopleConfirmStatus() == 0||item.getCooperEntrustStatus() == 0||item.getApplyConfirmStatus() == 0)).collect(Collectors.toList());
-		if(declareList2.size() > 0) {
-			BeanUtils.copyProperties(declareList2.get(0),orderVo);
-			return orderVo;
-		}
-
-		//未被委托订单,并且订单未确认
-		List<TbOrder> declareList1 = orderList.stream().filter(item -> "1".equals(item.getDeclareType()) && item.getPeopleConfirmStatus() == 0).collect(Collectors.toList());
-		if(declareList1.size() > 0) {
-			BeanUtils.copyProperties(declareList1.get(0),orderVo);
-			return orderVo;
-		}
-		return null;
-	}
-
-
-
-	/*-----           正常业务逻辑👆👆    rpc远程调用👇👇 -----*/
-
-
-	// TODO: 2023/8/28 系统接收到航通接口信息:车辆已出一级市场
-	public boolean orderFinish(String billCode){
-		//1、todo: 调用银行接口发起划扣:将边民划扣至银行第三方账户的货款,支付至外籍商户的账户
-		//收到划扣成功回执后,方法往下制行
-
-		//2、修改一级市场订单支付状态为已支付,修改一级市场订单完成状态为已完成
-		//获取登录人
-		//获取出了一级市场的所有边民订单
-		LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
-		wrapper.eq(TbOrder::getPreNo, billCode);
-		List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
-
-		tbOrders.forEach(order -> {
-			order.setTradeStatus(TradeStatus.TRADE_STATUS_ONE.getCode()); //已支付
-			order.setTradeTime(new Date()); //支付时间
-			order.setPayType(0); //支付类型
-			order.setFinishStatus(FinishStatus.FINISH_STATUS_ONE.getCode()); //已完成
-
-
-			order.setUpdateTime(new Date());
-
-			boolean result = updateById(order);
-			//修改失败记录是否应该存表??
-			//if(!result) throw new RuntimeException("当前订单状态修改失败,请联系管理员!");
-
-			if(result) {
-				//todo:通知边民转售已经采购的商品;边民上架商品,初步定价
-
-				//发送短信
-				TbPeople tbPeople = tbPeopleService.getById(order.getBuyUserId());
-				String content="您好,您的边民互市订单商品[车辆已出一级市场],订单商品是[" + order.getGoodsNames() + "]。请前往app进行商品转售";
-				SystemObject.smsFactory.handler().sendSMS(tbPeople.getPhone(),content);
-
-				MessageDto dto = new MessageDto();
-				dto.setUrl("/pages/market/one/leader/order");
-				dto.setUserId(order.getBuyUserId());
-				dto.setContents("你采购的《" + order.getGoodsNames() + "》订单已完成。请及时上架商品到二级市场。");
-				adminInterface.messageSave(dto);
-			}
-		});
-
-		//3、todo: 调用航通接口,发送划扣成功回执信息给航通(只发送),航通暂未提供此接口
-
-		return true;
-	}
-
-
-	/** 远程调用:根据时间和登陆人查询订单 */
-	public List<OrderDto> selectOrderList( Long appUserId){
-		//判断当前是否已接单
-		LambdaQueryWrapper<TbOrder> queryWrapper = new LambdaQueryWrapper<>();
-		//根据当天时间查询
+public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implements IService<TbOrder> {
+
+    /**
+     * 底层 Mapper 对象
+     */
+    @Autowired
+    TbOrderMapper tbOrderMapper;
+
+    /**
+     * 互市组
+     */
+    @Autowired
+    private TbPeopleService tbPeopleService;
+    @Autowired
+    TbOrderPeopleConfirmMapper tbOrderPeopleConfirmMapper;
+    @Autowired
+    private MethodOrderService methodOrderService;
+
+    @Autowired
+    private TbGoodsTransitMapper tbGoodsTransitMapper;
+    @Autowired
+    private TbGoodsTransitService tbGoodsTransitService;
+    @Autowired
+    private LevelOneServerInterface levelOneServerInterface;
+    @Autowired
+    private TbEnterpriseMapper tbEnterpriseMapper;
+    @Autowired
+    private AsyncServerInterface asyncServerInterface;
+    @Autowired
+    private TbPeopleMapper tbPeopleMapper;
+
+    @Resource
+    private HtTradeSettlementService htTradeSettlementService;
+
+    /**
+     * 远程调用
+     */
+    @Autowired
+    private AdminInterface adminInterface;
+
+    /**
+     * 删
+     */
+    void delete(Long id) {
+        removeById(id);
+    }
+
+    /**
+     * 改
+     */
+    void update(TbOrder t) {
+        updateById(t);
+
+    }
+
+    /**
+     * 查
+     */
+    TbOrder getById(Long id) {
+        return super.getById(id);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    List<TbOrder> getList(SoMap so) {
+        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("订单状态异常!");
+        //如果该订单商户已叫车则无法进行取消
+        if (tbOrder.getCallCarStatus() == 1 || tbOrder.getCallCarStatus() == 2) {
+            TbEnterprise enterprise = tbEnterpriseMapper.selectById(appLoginInfo.getFk());
+            String phone = null;
+            if (enterprise != null) phone = enterprise.getOwnerTel();
+            throw new ServiceException("您的订单单号为[ " + tbOrder.getTradeNo() + " ]商户已叫车,无法进行取消,请联系商户电话[ " + phone + " ]进行取消。");
+        }
+        //将状态设置已取消
+        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);
+            //给互助组下属所有人发送取消的message
+            PeopleDto peopleDto = levelOneServerInterface.getRpcById(appLoginInfo.getFk());
+            methodOrderService.sendGroupMessage(peopleDto.getGroupId(), peopleDto.getName(), false);
+            return updated == 1;
+        }
+        return false;
+    }
+
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     * APP专用 与该订单相关的任何人员能看
+     *
+     * @param so
+     * @return
+     */
+    List<TbOrder> getAPPList(SoMap so) {
+        //获取登录用户,登录的用户也许边民,互市组组长,一级市场商家
+        APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+
+        //与订单相关的人能看
+        List<TbOrder> tbOrderList = methodOrderService.checkType(appLoginInfo.getUserType(), appLoginInfo.getFk(), so);
+        return tbOrderList;
+    }
+
+    /**
+     * 获取当前登陆人订单集合
+     */
+    public List<TbOrder> selectSelfOrders(SoMap so) {
+        APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+        if (appLoginInfo == null || appLoginInfo.getLoginId() == null)
+            throw new RuntimeException("当前登陆用户信息已失效!");
+        so.put("buyUserId", appLoginInfo.getLoginId());
+        so.put("deleteStatus", DeleteStatus.DELETE_STATUS_ON.getCode());
+        return tbOrderMapper.getList(so);
+    }
+
+    /**
+     * 查 转售列表:边民组长查看已完结订单,包括已转售/未转售
+     */
+    List<TbOrder> getResaleOrders() {
+        //获取app登录用户
+        APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+        if (appLoginInfo == null) throw new RuntimeException("当前登陆用户信息已失效!");
+
+        LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
+        //订单状态(0=未完成,1=已完成)
+        wrapper.eq(TbOrder::getFinishStatus, 1);
+        wrapper.eq(TbOrder::getBuyUserId, appLoginInfo.getLoginId());
+        List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
+
+        return tbOrders;
+    }
+
+    /**
+     * 改 转售状态:根据订单Id把订单改为已转售
+     */
+    boolean updateResaleStatus(Long orderId) {
+        LambdaUpdateWrapper<TbOrder> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.set(TbOrder::getResaleStatus, 1);
+        wrapper.eq(TbOrder::getId, orderId);
+
+        return this.update(wrapper);
+    }
+
+    boolean updateEnterpriseConfirm(TbOrder order) {
+
+        // 商户拒绝接单后把商户确认状态改为否,并把商品发布表状态恢复为默认值
+        if (2 == order.getEnterpriseConfirm()) {
+            LambdaUpdateWrapper<TbGoodsTransit> wrapper = new LambdaUpdateWrapper<>();
+            //商品未被下单
+            wrapper.set(TbGoodsTransit::getIsOrders, OrderStatus.ORDER_STATUS_ZERO.getCode());
+            //商品在售
+            wrapper.set(TbGoodsTransit::getGoodsStatus, GoodsStatus.GOODS_STATUS_ON.getCode());
+
+            wrapper.eq(TbGoodsTransit::getId, order.getGoodsId());
+            boolean update = tbGoodsTransitService.update(wrapper);
+
+        }
+
+        TbOrder tbOrder = tbOrderMapper.selectById(order.getId());
+        //todo:给组长发一条商家消息
+        String message = order.getEnterpriseConfirm() == 1 ? "商户已确认,请及时发货。" : "已被商户拒绝,请重新接单或换一家商品。";
+        MessageDto dto = new MessageDto();
+        dto.setUrl("/pages/market/one/leader/order");
+        dto.setUserId(tbOrder.getBuyUserId());
+        dto.setContents("你接单的《" + tbOrder.getGoodsNames() + "》" + message);
+        adminInterface.messageSave(dto);
+
+        // 修改订单表的商家确认状态
+        order.setGoodsId(null);
+        boolean flag = updateById(order);
+
+        return flag;
+    }
+
+    /**
+     * 查看订单详情
+     *
+     * @param orderId 一级市场订单ID
+     * @return 订单的vo
+     */
+    public OrderVo orderDetail(Long orderId) {
+        //查询订单
+        TbOrder order = tbOrderMapper.selectById(orderId);
+        if (order == null) throw new ServiceException("订单信息异常!");
+        //执行封装
+        OrderVo orderVo = new OrderVo();
+        //数据拷贝
+        BeanUtils.copyProperties(order, orderVo);
+        return orderVo;
+    }
+
+    /**
+     * 根据订单ID查询边民确认订单信息
+     *
+     * @param orderId
+     * @return
+     */
+    public List<TbOrderPeopleConfirm> selectPeopleConfirmByOrderId(Long orderId) {
+        List<TbOrderPeopleConfirm> tbOrderPeopleConfirms = tbOrderPeopleConfirmMapper.selectList(new LambdaQueryWrapper<TbOrderPeopleConfirm>().eq(TbOrderPeopleConfirm::getOrderId, orderId));
+        if (tbOrderPeopleConfirms.size() > 0) {
+            tbOrderPeopleConfirms.forEach(item -> {
+                item.setOrderId(null);
+                item.setGroupId(null);
+                item.setId(null);
+                item.setPeopleId(null);
+            });
+        }
+        return tbOrderPeopleConfirms;
+    }
+
+    public List<PeopleConfirmVo> getPeopleState(SoMap so) {
+        List<PeopleConfirmVo> peopleConfirmList = new ArrayList<>();
+
+        // 获取当前订单所有已确认的边民
+        List<TbOrderPeopleConfirm> peopleConfirmlist = tbOrderPeopleConfirmMapper.getList(so);
+        Set<Long> peopleIds = new HashSet<>();
+        for (TbOrderPeopleConfirm tbOrderPeopleConfirm : peopleConfirmlist) {
+            peopleIds.add(tbOrderPeopleConfirm.getPeopleId());
+        }
+
+        // 获取组内所有边民
+        List<TbPeople> peopleList = tbPeopleService.getList(so);
+        for (TbPeople people : peopleList) {
+            PeopleConfirmVo peopleConfirmVo = new PeopleConfirmVo();
+            peopleConfirmVo.setOrderId(so.getLong("orderId"));
+            peopleConfirmVo.setGroupId(so.getLong("groupId"));
+            peopleConfirmVo.setPeopleId(people.getId());
+            peopleConfirmVo.setPeopleName(people.getName());
+
+            // 订单确认状态
+            if (peopleIds.contains(people.getId()) || 2 == people.getRole()) {
+                peopleConfirmVo.setOrderStatus(1);
+            } else {
+                peopleConfirmVo.setOrderStatus(0);
+            }
+            // 进境申报状态
+            peopleConfirmVo.setEntryStatus(0);
+            // 进口申报状态
+            peopleConfirmVo.setImportStatus(0);
+
+            peopleConfirmList.add(peopleConfirmVo);
+        }
+        return peopleConfirmList;
+    }
+
+    /**
+     * 接收订单推送消息,
+     * 边民进行交易确认,
+     * 支付申请,刷脸认
+     * 证,系统发起进行交
+     * 易
+     */
+    public void receiveOrderMessageFromHT() {
+        //todo: 8月27日 接收航通申报单推送消息
+        //1. 获取订单,并将订单保存到订单表
+
+        //2 根据订单内容获取边民集合,创建订单监听表,将该订单内需要完成的边民数逐条保存到监听表内
+
+        //3. 发起支付申请 , 刷脸认证
+
+        //4. 第3步完成且通过后,调用银行的sdk,验证边民的支付信息,由银行将钱转入第三方监管账户,并给出回执
+
+        //5. 拿到银行回执,判断其状态,修改监听表内该订单的完成情况
+
+        //6. 如果监听表内全部边民完成验证,则更新订单表该订单的边民验证完成情况
+
+        //7. todo: 如果订单表的边民验证状态为已完成,将信息同步至航通
+
+    }
+
+
+    /**
+     * app首页获取边民未确认订单
+     */
+    public OrderVo getNoConfirmOrder() {
+        //获取登录人
+        APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+
+        LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TbOrder::getBuyUserId, appLoginInfo.getFk());
+        wrapper.eq(TbOrder::getPeopleConfirmStatus, ConfirmStatus.CONFIRM_STATUS_ZERO.getCode())//订单待确认
+                .or().eq(TbOrder::getCooperEntrustStatus, ConfirmStatus.CONFIRM_STATUS_ZERO.getCode())//互助委托待确认
+                .or().eq(TbOrder::getApplyConfirmStatus, ConfirmStatus.CONFIRM_STATUS_ZERO.getCode());//进口申报待确认
+        wrapper.orderByDesc(TbOrder::getCreateTime);
+        wrapper.orderByDesc(TbOrder::getUpdateTime);
+
+        List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
+        if (tbOrders.size() > 0) {
+            TbOrder order = tbOrders.get(0);
+
+            OrderVo orderVo = new OrderVo();
+            BeanUtils.copyProperties(order, orderVo);
+            return orderVo;
+        }
+        return null;
+    }
+
+    /**
+     * 获取一级市场边民订单的所有确认状态
+     *
+     * @param orderId 一级市场订单表ID
+     */
+    public ConfirmVo getConfirmStatus(Long orderId) {
+        return tbOrderMapper.getConfirmStatus(orderId);
+    }
+
+    /**
+     * 边民订单确认
+     *
+     * @param orderId 一级市场订单表ID
+     */
+    public boolean confirmOrder(Long orderId) {
+        TbOrder tbOrder = this.getById(orderId);
+        if (tbOrder == null) {
+            throw new AjaxError("订单不存在");
+        }
+        // TODO: 2023/8/28 边民发起支付申请,调用银行接口:验证边民支付信息,将货款先存入银行第三方账户,并给出回执
+        // 银行返回支付回执为"交易成功"时,方法往下执行
+
+        //获取登录人
+        APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+
+        // TODO: 2023/8/29 更新状态保存交易记录
+        LambdaUpdateWrapper<TbOrder> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.set(TbOrder::getPeopleConfirmStatus, ConfirmStatus.CONFIRM_STATUS_ONE.getCode());//边民确认:1=确认
+        wrapper.set(TbOrder::getPeopleConfirmTime, new Date());
+        wrapper.set(TbOrder::getUpdateBy, appLoginInfo.getLoginId());
+        wrapper.set(TbOrder::getUpdateName, appLoginInfo.getLoginName());
+        wrapper.set(TbOrder::getUpdateTime, new Date());
+        wrapper.eq(TbOrder::getId, orderId);
+        boolean result = update(wrapper);
+
+        if (result && "1".equals(tbOrder.getDeclareType())) {
+            // TODO: 2023/8/29 调用航通009接口,发送信息
+            sendConfirmMsgToHt(tbOrder);
+        }
+        return result;
+    }
+
+    /**
+     * 互助委托申报确认
+     *
+     * @param orderId 一级市场订单表ID
+     */
+    public boolean cooperOrder(Long orderId) {
+        //获取登录人
+        APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+
+        LambdaUpdateWrapper<TbOrder> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.set(TbOrder::getCooperEntrustStatus, ConfirmStatus.CONFIRM_STATUS_ONE.getCode());//互助委托申报确认:1=确认
+        wrapper.set(TbOrder::getCooperEntrustTime, new Date());
+
+        wrapper.set(TbOrder::getUpdateBy, appLoginInfo.getLoginId());
+        wrapper.set(TbOrder::getUpdateName, appLoginInfo.getLoginName());
+        wrapper.set(TbOrder::getUpdateTime, new Date());
+
+        wrapper.eq(TbOrder::getId, orderId);
+        boolean result = update(wrapper);
+
+        return result;
+    }
+
+    /**
+     * 边民进口申报确认
+     *
+     * @param orderId 一级市场订单表ID
+     */
+    public boolean applyOrder(Long orderId) {
+        TbOrder tbOrder = this.getById(orderId);
+        if (tbOrder == null) {
+            throw new AjaxError("订单不存在");
+        }
+        //获取登录人
+        APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+
+        LambdaUpdateWrapper<TbOrder> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.set(TbOrder::getApplyConfirmStatus, ConfirmStatus.CONFIRM_STATUS_ONE.getCode());//进口申报确认:1=确认
+        wrapper.set(TbOrder::getApplyConfirmTime, new Date());
+
+        wrapper.set(TbOrder::getUpdateBy, appLoginInfo.getLoginId());
+        wrapper.set(TbOrder::getUpdateName, appLoginInfo.getLoginName());
+        wrapper.set(TbOrder::getUpdateTime, new Date());
+
+        wrapper.eq(TbOrder::getId, orderId);
+        boolean result = update(wrapper);
+
+        if (result && !"1".equals(tbOrder.getDeclareType())
+                && tbOrder.getPeopleConfirmStatus() == 1 && tbOrder.getCooperEntrustStatus() == 1) {
+            // TODO: 2023/8/29 调用航通009接口,发送信息
+            sendConfirmMsgToHt(tbOrder);
+        }
+        return result;
+    }
+
+    /**
+     * 发送009信息到航通
+     */
+    private void sendConfirmMsgToHt(TbOrder tbOrder) {
+        TbPeople tbPeople = tbPeopleService.getById(tbOrder.getBuyUserId());
+        PeopleConfirmDTO peopleConfirmDTO = new PeopleConfirmDTO();
+        peopleConfirmDTO.setBorderName(tbOrder.getBuyUserName());
+        peopleConfirmDTO.setIdno(tbPeople.getIdCard());
+        peopleConfirmDTO.setSettleBillNo(tbOrder.getSettleBillNo());
+        peopleConfirmDTO.setPreIeportNo(tbOrder.getPreIeportNo());
+        FeignFactory.asyncServerInterface.sendConfirm(peopleConfirmDTO);
+    }
+
+
+    /**
+     * 判断当前边民的边民订单是否委托
+     */
+    public OrderVo getByDeclareType() {
+        APPLoginUserInfo appLoginInfo = StpAPPUserUtil.getAPPLoginInfo();
+        TbPeople tbPeople = tbPeopleMapper.selectById(appLoginInfo.getFk());
+        if (tbPeople == null) throw new ServiceException("当前用户不存在,请联系管理员!");
+
+        SoMap so = new SoMap();
+        so.put("buyUserId", appLoginInfo.getFk());
+        so.put("deleteStatus", DeleteStatus.DELETE_STATUS_ON.getCode());
+        List<TbOrder> orderList = tbOrderMapper.getList(so);
+
+        OrderVo orderVo = new OrderVo();
+
+        //被委托订单,并且三个状态中有一个未确认
+        List<TbOrder> declareList2 = orderList.stream().filter(item -> !"1".equals(item.getDeclareType()) &&
+                (item.getPeopleConfirmStatus() == 0 || item.getCooperEntrustStatus() == 0 || item.getApplyConfirmStatus() == 0)).collect(Collectors.toList());
+        if (declareList2.size() > 0) {
+            BeanUtils.copyProperties(declareList2.get(0), orderVo);
+            return orderVo;
+        }
+
+        //未被委托订单,并且订单未确认
+        List<TbOrder> declareList1 = orderList.stream().filter(item -> "1".equals(item.getDeclareType()) && item.getPeopleConfirmStatus() == 0).collect(Collectors.toList());
+        if (declareList1.size() > 0) {
+            BeanUtils.copyProperties(declareList1.get(0), orderVo);
+            return orderVo;
+        }
+        return null;
+    }
+
+
+
+    /*-----           正常业务逻辑👆👆    rpc远程调用👇👇 -----*/
+
+
+    // TODO: 2023/8/28 系统接收到航通接口信息:车辆已出一级市场
+    public boolean orderFinish(HtPassCardDTO htPassCardDTO) {
+        String billCode = htPassCardDTO.getBillCode();
+        //1、todo: 调用银行接口发起划扣:将边民划扣至银行第三方账户的货款,支付至外籍商户的账户
+        //收到划扣成功回执后,方法往下制行
+
+        //2、修改一级市场订单支付状态为已支付,修改一级市场订单完成状态为已完成
+        //获取登录人
+        //获取出了一级市场的所有边民订单
+        LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TbOrder::getPreNo, billCode);
+        List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
+        if (tbOrders.isEmpty()) {
+            return false;
+        }
+        //更新结算单状态
+        Long settleId = tbOrders.get(0).getSaleMainId();
+        HtTradeSettlement htTradeSettlement = htTradeSettlementService.getById(settleId);
+        htTradeSettlement.setFinishStatus(1).setFinishTime(htPassCardDTO.getCheckTime());
+        htTradeSettlementService.updateById(htTradeSettlement);
+        tbOrders.forEach(order -> {
+            order.setTradeStatus(TradeStatus.TRADE_STATUS_ONE.getCode()); //已支付
+            order.setTradeTime(new Date()); //支付时间
+            order.setPayType(0); //支付类型
+            order.setFinishStatus(FinishStatus.FINISH_STATUS_ONE.getCode()); //已完成
+            order.setFinishTime(htPassCardDTO.getCheckTime());
+            order.setUpdateTime(new Date());
+
+            boolean result = updateById(order);
+            //修改失败记录是否应该存表??
+            //if(!result) throw new RuntimeException("当前订单状态修改失败,请联系管理员!");
+
+            if (result) {
+                //todo:通知边民转售已经采购的商品;边民上架商品,初步定价
+
+                //发送短信
+                TbPeople tbPeople = tbPeopleService.getById(order.getBuyUserId());
+                String content = "您好,您的边民互市订单商品[车辆已出一级市场],订单商品是[" + order.getGoodsNames() + "]。请前往app进行商品转售";
+                SystemObject.smsFactory.handler().sendSMS(tbPeople.getPhone(), content);
+
+                MessageDto dto = new MessageDto();
+                dto.setUrl("/pages/market/one/leader/order");
+                dto.setUserId(order.getBuyUserId());
+                dto.setContents("你采购的《" + order.getGoodsNames() + "》订单已完成。请及时上架商品到二级市场。");
+                adminInterface.messageSave(dto);
+            }
+        });
+        return true;
+    }
+
+
+    /**
+     * 远程调用:根据时间和登陆人查询订单
+     */
+    public List<OrderDto> selectOrderList(Long appUserId) {
+        //判断当前是否已接单
+        LambdaQueryWrapper<TbOrder> queryWrapper = new LambdaQueryWrapper<>();
+        //根据当天时间查询
 //		queryWrapper.eq(TbOrder::getCreateTime,sdf.format(currDay));
-		queryWrapper.eq(TbOrder::getCreateBy,appUserId);
-		//todo:届时放开该注释
+        queryWrapper.eq(TbOrder::getCreateBy, appUserId);
+        //todo:届时放开该注释
 //		queryWrapper.eq(TbOrder::getApply,ApplyStatus.APPLY_STATUS_ONE.getCode()); //申报通过
-		queryWrapper.eq(TbOrder::getDeleteStatus,DeleteStatus.DELETE_STATUS_ON.getCode());
-		queryWrapper.apply("DATE(create_time) = DATE({0})", new Date()); // 匹配当天的数据
-		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;
-	}
-
-	/** 远程调用  修改订单的叫车状态 */
-	public boolean updateOrderCallCarStatus(OrderDto orderDto){
-		TbOrder tbOrder = new TbOrder();
-		BeanUtils.copyProperties(orderDto,tbOrder);
-		int update = tbOrderMapper.updateById(tbOrder);
-		System.out.println("finish update order call_car_status");
-		return update == 1;
-	}
-
-	/** 远程调用 根据订单Id修改状态:在二级市场被下单[0=未被下单,1=已被下单] */
-	public boolean updateBeingOrder(Long levelOneOrderId) {
-		TbOrder tbOrder = new TbOrder();
-		tbOrder.setId(levelOneOrderId);
-		tbOrder.setBeingOrder(1);
-		int i = tbOrderMapper.updateById(tbOrder);
-		if(1 != i) System.out.println("远程调用:根据订单Id修改状态(当前订单在二级市场被下单)失败!!!!!!");
-
-		return true;
-	}
+        queryWrapper.eq(TbOrder::getDeleteStatus, DeleteStatus.DELETE_STATUS_ON.getCode());
+        queryWrapper.apply("DATE(create_time) = DATE({0})", new Date()); // 匹配当天的数据
+        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;
+    }
+
+    /**
+     * 远程调用  修改订单的叫车状态
+     */
+    public boolean updateOrderCallCarStatus(OrderDto orderDto) {
+        TbOrder tbOrder = new TbOrder();
+        BeanUtils.copyProperties(orderDto, tbOrder);
+        int update = tbOrderMapper.updateById(tbOrder);
+        System.out.println("finish update order call_car_status");
+        return update == 1;
+    }
+
+    /**
+     * 远程调用 根据订单Id修改状态:在二级市场被下单[0=未被下单,1=已被下单]
+     */
+    public boolean updateBeingOrder(Long levelOneOrderId) {
+        TbOrder tbOrder = new TbOrder();
+        tbOrder.setId(levelOneOrderId);
+        tbOrder.setBeingOrder(1);
+        int i = tbOrderMapper.updateById(tbOrder);
+        if (1 != i) System.out.println("远程调用:根据订单Id修改状态(当前订单在二级市场被下单)失败!!!!!!");
+
+        return true;
+    }
 
 }

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

@@ -672,4 +672,7 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
     public Map<String, Object> selectUsers(){
         return appUserMapper.selectUsers();
     };
+
+
+
 }

+ 17 - 0
sp-service/sp-admin/src/main/java/com/pj/project4sp/admin/AdminTypeEnum.java

@@ -0,0 +1,17 @@
+package com.pj.project4sp.admin;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+@Getter
+@AllArgsConstructor
+public enum AdminTypeEnum {
+    ADMIN_TYPE("00","运营单位"),
+    COOPERATIVE_TYPE("01","合作社");
+    private String type;
+    private String desc;
+
+}

+ 10 - 2
sp-service/sp-admin/src/main/java/com/pj/project4sp/admin/SpAdmin.java

@@ -19,8 +19,16 @@ public class SpAdmin implements Serializable  {
 
 
 	/** id,--主键、自增 */
-	public Long id;	
-	
+	public Long id;
+	/**
+	 * 类型  (00=运营管理者,01=合作社)
+	 */
+	private String type="00";
+	/**
+	 * 互市区
+	 */
+	private Long tradeAreaId=-1L;
+
 	/** admin名称 */
 	public String name;	
 	

+ 164 - 141
sp-service/sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminController.java

@@ -16,153 +16,176 @@ import cn.dev33.satoken.stp.StpUtil;
 
 /**
  * Controller -- 系统管理员表
+ *
  * @author kong
  */
 @RestController
 @RequestMapping("/admin/")
 public class SpAdminController {
 
-	@Autowired
-	SpAdminMapper spAdminMapper;
-	
-	@Autowired
-	SpAdminService spAdminService;
-	
-	@Autowired
-	SpAdminPasswordService spAdminPasswordService;
-
-	/** 增  */
-	@RequestMapping("add")
-	AjaxJson add(SpAdmin admin){
-		StpUtil.checkPermission(AuthConst.ADMIN_LIST);
-		long id = spAdminService.add(admin);
-		return AjaxJson.getSuccessData(id);
-	}
-
-	/** 删 */
-	@RequestMapping("delete")
-	AjaxJson delete(long id){
-		StpUtil.checkPermission(AuthConst.ADMIN_LIST);	
-		// 不能自己删除自己
-		if(StpUtil.getLoginIdAsLong() == id) {
-			return AjaxJson.getError("不能自己删除自己");
-		}
-		int line = spAdminMapper.delete(id);
-		return AjaxJson.getByLine(line);
-	}
-
-	/** 删 - 根据id列表 */
-	@RequestMapping("deleteByIds")
-	AjaxJson deleteByIds(){
-		// 鉴权
-		StpUtil.checkPermission(AuthConst.ADMIN_LIST);	
-		// 不能自己删除自己
-		List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class); 
-		if(ids.contains(StpUtil.getLoginIdAsLong())) {
-			return AjaxJson.getError("不能自己删除自己");
-		}
-		// 开始删除 
-		int line = SP.publicMapper.deleteByIds("sp_admin", ids);
-		return AjaxJson.getByLine(line);
-	}
-	
-	/** 改  -  name */
-	@RequestMapping("update")
-	AjaxJson update(SpAdmin obj){
-		StpUtil.checkPermission(AuthConst.ADMIN_LIST);	
-		SpAdminUtil.checkName(obj.getId(), obj.getName());
-		int line = spAdminMapper.update(obj);
-		return AjaxJson.getByLine(line);
-	}
-
-	/** 查  */
-	@RequestMapping("getById")
-	AjaxJson getById(long id){
-		StpUtil.checkPermission(AuthConst.ADMIN_LIST);
-		Object data = spAdminMapper.getById(id);
-		return AjaxJson.getSuccessData(data);
-	}
-
-	/** 查 - 集合 */
-	@RequestMapping("getList")
-	AjaxJson getList(){
-		StpUtil.checkPermission(AuthConst.ADMIN_LIST);	
-		SoMap so = SoMap.getRequestSoMap();
-		List<SpAdmin> list = spAdminMapper.getList(so.startPage());
-		return AjaxJson.getPageData(so.getDataCount(), list);
-	}
-
-	/** 改密码 */
-	@RequestMapping("updatePassword")
-	AjaxJson updatePassword(long id, String password){
-		StpUtil.checkPermission(AuthConst.ADMIN_LIST);	
-		int line = spAdminPasswordService.updatePassword(id, password);
-		return AjaxJson.getByLine(line);
-	}
-	
-	/** 改头像  */
-	@RequestMapping("updateAvatar")
-	AjaxJson updateAvatar(long id, String avatar){
-		StpUtil.checkPermission(AuthConst.ADMIN_LIST);	
-		int line = SP.publicMapper.updateColumnById("sp_admin", "avatar", avatar, id);
-		return AjaxJson.getByLine(line);
-	}
-	
-	/** 改状态  */
-	@RequestMapping("updateStatus")
-	public AjaxJson updateStatus(long adminId, int status) {
-		StpUtil.checkPermission(AuthConst.R1);
-
-		// 验证对方是否为超管(保护超管不受摧残) 
-		if(StpUtil.hasPermission(adminId, AuthConst.R1)){
-			return AjaxJson.getError("抱歉,对方角色为系统超级管理员,您暂无权限操作");
-		}
-		
-		// 修改状态 
-		SP.publicMapper.updateColumnById("sp_admin", "status", status, adminId);
-		// 如果是禁用,就停掉其秘钥有效果性,使其账号的登录状态立即无效 
-		if(status == 2) {
-			StpUtil.logout(adminId);
-		}
-		return AjaxJson.getSuccess();
-	}
-	
-	/** 改角色  */
-	@RequestMapping("updateRole")
-	AjaxJson updateRole(long id, String roleId){
-		StpUtil.checkPermission(AuthConst.R1);
-		int line = SP.publicMapper.updateColumnById("sp_admin", "role_id", roleId, id);
-		return AjaxJson.getByLine(line);
-	}
-	
-	/** 返回当前admin信息  */
-	@RequestMapping("getByCurr")
-	AjaxJson getByCurr() {
-		SpAdmin admin = SpAdminUtil.getCurrAdmin();
-		return AjaxJson.getSuccessData(admin);
-	}
-	
-	/** 当前admin修改信息 */
-	@RequestMapping("updateInfo")
-	AjaxJson updateInfo(SpAdmin obj){
-		obj.setId(StpUtil.getLoginIdAsLong());
-		SpAdminUtil.checkName(obj.getId(), obj.getName());
-		int line = spAdminMapper.update(obj);
-		return AjaxJson.getByLine(line);
-	}
-
-
-
-
-
-
-	/** 查 - 集合 */
-	@RequestMapping("rpc/getList")
-	List<SpAdmin> rpcGetList(){
-		SoMap so = SoMap.getRequestSoMap();
-		return spAdminMapper.getList(so.startPage());
-	}
-	
+    @Autowired
+    SpAdminMapper spAdminMapper;
+
+    @Autowired
+    SpAdminService spAdminService;
+
+    @Autowired
+    SpAdminPasswordService spAdminPasswordService;
+
+    /**
+     * 增
+     */
+    @RequestMapping("add")
+    AjaxJson add(SpAdmin admin) {
+        StpUtil.checkPermission(AuthConst.ADMIN_LIST);
+        admin.setType(AdminTypeEnum.ADMIN_TYPE.getType());
+        long id = spAdminService.add(admin);
+        return AjaxJson.getSuccessData(id);
+    }
+
+    /**
+     * 删
+     */
+    @RequestMapping("delete")
+    AjaxJson delete(long id) {
+        StpUtil.checkPermission(AuthConst.ADMIN_LIST);
+        // 不能自己删除自己
+        if (StpUtil.getLoginIdAsLong() == id) {
+            return AjaxJson.getError("不能自己删除自己");
+        }
+        int line = spAdminMapper.delete(id);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 删 - 根据id列表
+     */
+    @RequestMapping("deleteByIds")
+    AjaxJson deleteByIds() {
+        // 鉴权
+        StpUtil.checkPermission(AuthConst.ADMIN_LIST);
+        // 不能自己删除自己
+        List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
+        if (ids.contains(StpUtil.getLoginIdAsLong())) {
+            return AjaxJson.getError("不能自己删除自己");
+        }
+        // 开始删除
+        int line = SP.publicMapper.deleteByIds("sp_admin", ids);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 改  -  name
+     */
+    @RequestMapping("update")
+    AjaxJson update(SpAdmin obj) {
+        StpUtil.checkPermission(AuthConst.ADMIN_LIST);
+        SpAdminUtil.checkName(obj.getId(), obj.getName());
+        int line = spAdminMapper.update(obj);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 查
+     */
+    @RequestMapping("getById")
+    AjaxJson getById(long id) {
+        StpUtil.checkPermission(AuthConst.ADMIN_LIST);
+        Object data = spAdminMapper.getById(id);
+        return AjaxJson.getSuccessData(data);
+    }
+
+    /**
+     * 查 - 集合
+     */
+    @RequestMapping("getList")
+    AjaxJson getList() {
+        StpUtil.checkPermission(AuthConst.ADMIN_LIST);
+        SoMap so = SoMap.getRequestSoMap();
+        List<SpAdmin> list = spAdminMapper.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+    /**
+     * 改密码
+     */
+    @RequestMapping("updatePassword")
+    AjaxJson updatePassword(long id, String password) {
+        StpUtil.checkPermission(AuthConst.ADMIN_LIST);
+        int line = spAdminPasswordService.updatePassword(id, password);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 改头像
+     */
+    @RequestMapping("updateAvatar")
+    AjaxJson updateAvatar(long id, String avatar) {
+        StpUtil.checkPermission(AuthConst.ADMIN_LIST);
+        int line = SP.publicMapper.updateColumnById("sp_admin", "avatar", avatar, id);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 改状态
+     */
+    @RequestMapping("updateStatus")
+    public AjaxJson updateStatus(long adminId, int status) {
+        StpUtil.checkPermission(AuthConst.R1);
+
+        // 验证对方是否为超管(保护超管不受摧残)
+        if (StpUtil.hasPermission(adminId, AuthConst.R1)) {
+            return AjaxJson.getError("抱歉,对方角色为系统超级管理员,您暂无权限操作");
+        }
+
+        // 修改状态
+        SP.publicMapper.updateColumnById("sp_admin", "status", status, adminId);
+        // 如果是禁用,就停掉其秘钥有效果性,使其账号的登录状态立即无效
+        if (status == 2) {
+            StpUtil.logout(adminId);
+        }
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 改角色
+     */
+    @RequestMapping("updateRole")
+    AjaxJson updateRole(long id, String roleId) {
+        StpUtil.checkPermission(AuthConst.R1);
+        int line = SP.publicMapper.updateColumnById("sp_admin", "role_id", roleId, id);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 返回当前admin信息
+     */
+    @RequestMapping("getByCurr")
+    AjaxJson getByCurr() {
+        SpAdmin admin = SpAdminUtil.getCurrAdmin();
+        return AjaxJson.getSuccessData(admin);
+    }
+
+    /**
+     * 当前admin修改信息
+     */
+    @RequestMapping("updateInfo")
+    AjaxJson updateInfo(SpAdmin obj) {
+        obj.setId(StpUtil.getLoginIdAsLong());
+        SpAdminUtil.checkName(obj.getId(), obj.getName());
+        int line = spAdminMapper.update(obj);
+        return AjaxJson.getByLine(line);
+    }
+
+
+    /**
+     * 查 - 集合
+     */
+    @RequestMapping("rpc/getList")
+    List<SpAdmin> rpcGetList() {
+        SoMap so = SoMap.getRequestSoMap();
+        return spAdminMapper.getList(so.startPage());
+    }
 
 
 }

+ 2 - 2
sp-service/sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminMapper.xml

@@ -6,8 +6,8 @@
 	<!-- 增 -->
 	<insert id="add">
 		insert into
-		sp_admin(name, avatar, phone, role_id, create_by_aid, create_time)
-		values (#{name}, #{avatar}, #{phone}, #{roleId}, #{createByAid}, now())
+		sp_admin(name, avatar, phone,type,trade_area_id, role_id, create_by_aid, create_time)
+		values (#{name}, #{avatar}, #{phone},#{type},#{tradeAreaId}, #{roleId}, #{createByAid}, now())
 	</insert>
 
 

+ 5 - 2
sp-service/sp-admin/src/main/java/com/pj/project4sp/admin4login/SpAccAdminController.java

@@ -15,6 +15,7 @@ import com.pj.utils.cache.RedisUtil;
 import com.wf.captcha.ArithmeticCaptcha;
 import com.wf.captcha.SpecCaptcha;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -48,8 +49,10 @@ public class SpAccAdminController {
 	
 	@Autowired
 	SpRolePermissionService spRolePermissionService;
-	
-	
+
+	@Autowired
+	private PasswordEncoder passwordEncoder;
+
 	/** 账号、密码登录  */
 	@RequestMapping("doLogin")
 	AjaxJson doLogin(String key, String password, String code, String verCode) {

+ 4 - 1
sp-service/sp-admin/src/main/java/com/pj/project4sp/admin4login/SpAccAdminService.java

@@ -103,7 +103,10 @@ public class SpAccAdminService {
         StpUserUtil.cachePerList(per_list);
         // 记录登录信息至redis
         PCLoginUserInfo info = new PCLoginUserInfo();
-        info.setLoginId(String.valueOf(admin.getId())).setLoginName(admin.getName());
+        info.setLoginId(String.valueOf(admin.getId()))
+                .setLoginName(admin.getName())
+                .setAdminType(admin.getType())
+                .setTradeAreaId(admin.getTradeAreaId());
         StpUserUtil.cachePcLoginInfo(info);
         return AjaxJson.getSuccessData(map);
     }