Quellcode durchsuchen

支付充值功能

qzy vor 4 Monaten
Ursprung
Commit
11cf5c58d9
31 geänderte Dateien mit 400 neuen und 255 gelöschten Zeilen
  1. 12 0
      sp-core/sp-api/src/main/java/com/pj/api/dto/PaymentTwoDto.java
  2. 1 1
      sp-core/sp-base/src/main/java/com/pj/utils/LogUtil.java
  3. 6 1
      sp-service/async-server/src/main/java/com/pj/ht_byte/HtByte.java
  4. 38 33
      sp-service/async-server/src/main/java/com/pj/ht_byte/HtByteController.java
  5. 2 1
      sp-service/async-server/src/main/java/com/pj/ht_byte/HtByteMapper.xml
  6. 15 3
      sp-service/async-server/src/main/java/com/pj/task/HtByteTask.java
  7. 7 7
      sp-service/async-server/src/main/java/com/pj/task/MethodHtByteTask.java
  8. 0 22
      sp-service/level-one-server/src/main/java/com/pj/ht_trade_settlement/HtTradeSettlementController.java
  9. 18 9
      sp-service/level-one-server/src/main/java/com/pj/ht_trade_settlement/HtTradeSettlementMapper.java
  10. 12 0
      sp-service/level-one-server/src/main/java/com/pj/ht_trade_settlement/HtTradeSettlementService.java
  11. 4 0
      sp-service/level-one-server/src/main/java/com/pj/tb_goods_units/TbGoodsUnitsService.java
  12. 0 38
      sp-service/level-one-server/src/main/java/com/pj/tb_import_order/TbImportOrderController.java
  13. 18 11
      sp-service/level-one-server/src/main/java/com/pj/tb_import_order/TbImportOrderService.java
  14. 5 1
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrder.java
  15. 0 4
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderController.java
  16. 22 10
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderMapper.java
  17. 3 0
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderMapper.xml
  18. 42 20
      sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderService.java
  19. 6 6
      sp-service/level-one-server/src/main/java/com/pj/tb_wallet_record/TbWalletAppController.java
  20. 0 1
      sp-service/level-one-server/src/main/java/com/pj/tb_wallet_record/TbWalletRecordMapper.xml
  21. 7 0
      sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/TbWalletTopupController.java
  22. 7 0
      sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/TbWalletTopupMapper.java
  23. 1 0
      sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/TbWalletTopupMapper.xml
  24. 54 0
      sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/TbWalletTopupService.java
  25. 30 0
      sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/task/QueryRefundTask.java
  26. 22 0
      sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/task/StartUp.java
  27. 9 1
      sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrdersController.java
  28. 24 23
      sp-service/level-two-server/src/main/java/com/pj/tb_orders/TbOrdersService.java
  29. 0 28
      sp-service/payment-server/src/main/java/com/pj/bank_info/BankInfoController.java
  30. 25 11
      sp-service/payment-server/src/main/java/com/pj/utils/CryptoUtil.java
  31. 10 24
      sp-service/payment-server/src/main/java/com/pj/xml/MessageXML.java

+ 12 - 0
sp-core/sp-api/src/main/java/com/pj/api/dto/PaymentTwoDto.java

@@ -250,6 +250,10 @@ public class PaymentTwoDto implements Serializable {
 	 * 采购商类型
 	 */
 	private Integer pcType;
+	/**
+	 * 总价
+	 */
+	private Double amount;
 
 	//费项列表
 	private List<CompanyDto> companyDtoList;
@@ -741,4 +745,12 @@ public class PaymentTwoDto implements Serializable {
 	public void setTotalPrice(BigDecimal totalPrice) {
 		this.totalPrice = totalPrice;
 	}
+
+	public Double getAmount() {
+		return amount;
+	}
+
+	public void setAmount(Double amount) {
+		this.amount = amount;
+	}
 }

+ 1 - 1
sp-core/sp-base/src/main/java/com/pj/utils/LogUtil.java

@@ -15,7 +15,7 @@ public class LogUtil {
 	public static void info(String str){
 		//System.err.println(str);
 		//System.out.println(str);
-		log.info(str);
+		//log.info(str);
 	}
 	
 	

+ 6 - 1
sp-service/async-server/src/main/java/com/pj/ht_byte/HtByte.java

@@ -96,11 +96,16 @@ public class HtByte extends Model<HtByte> implements Serializable {
 	 */
 	private Date createTime;
 
+	private Date finishTime;
+
 
-	@TableField(exist = false)
 	private String details;
 
 
+	private String veNo;
+	private String checkTime;
+	private String billCode;
+
 
 
 	

+ 38 - 33
sp-service/async-server/src/main/java/com/pj/ht_byte/HtByteController.java

@@ -1,6 +1,7 @@
 package com.pj.ht_byte;
 
 import java.util.List;
+
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -15,43 +16,47 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
 
 /**
  * Controller: ht_byte -- 航通基础信息字节码表
- * @author yzs 
+ *
+ * @author yzs
  */
 @RestController
 @RequestMapping("/HtByte/")
 public class HtByteController {
 
-	/** 底层 Service 对象 */
-	@Autowired
-	HtByteService htByteService;
-
-
-	
-
-
-	/** 查 - 根据id */  
-	@RequestMapping("getById")
-		@SaCheckPermission(HtByte.PERMISSION_CODE)
-	public AjaxJson getById(Integer id){
-		HtByte h = htByteService.getById(id);
-		return AjaxJson.getSuccessData(h);
-	}
-
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
-	@RequestMapping("getList")
-		@SaCheckPermission(HtByte.PERMISSION_CODE)
-	public AjaxJson getList() { 
-		SoMap so = SoMap.getRequestSoMap();
-		List<HtByte> list = htByteService.getList(so.startPage());
-		return AjaxJson.getPageData(so.getDataCount(), list);
-	}
-	
-	
-	
-	
-
-	
-	
-	
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    HtByteService htByteService;
+
+
+    /**
+     * 查 - 根据id
+     */
+    @RequestMapping("getById")
+    @SaCheckPermission(HtByte.PERMISSION_CODE)
+    public AjaxJson getById(Integer id) {
+        HtByte h = htByteService.getById(id);
+        return AjaxJson.getSuccessData(h);
+    }
+
+    @RequestMapping("updateStatus")
+    @SaCheckPermission(HtByte.PERMISSION_CODE)
+    public AjaxJson updateStatus(Integer id) {
+        int line = SP.publicMapper.updateColumnById(HtByte.TABLE_NAME, "finish_status", 0, id);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    @RequestMapping("getList")
+    @SaCheckPermission(HtByte.PERMISSION_CODE)
+    public AjaxJson getList() {
+        SoMap so = SoMap.getRequestSoMap();
+        List<HtByte> list = htByteService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
 
 }

+ 2 - 1
sp-service/async-server/src/main/java/com/pj/ht_byte/HtByteMapper.xml

@@ -28,7 +28,8 @@
 			<if test=' this.has("body") '> and body = #{body} </if>
 			<if test=' this.has("queueName") '> and queue_name = #{queueName} </if>
 			<if test=' this.has("finishStatus") '> and finish_status = #{finishStatus} </if>
-			<if test=' this.has("createTime") '> and create_time = #{createTime} </if>
+			<if test=' this.has("createTime") '> and date_format(create_time,'%Y-%m-%d') = #{createTime} </if>
+			<if test=' this.has("veNo") '> and ve_no like concat('%',#{veNo},'%') </if>
 		</where>
 		order by create_time desc
 	</select>

+ 15 - 3
sp-service/async-server/src/main/java/com/pj/task/HtByteTask.java

@@ -110,6 +110,7 @@ public class HtByteTask {
 //             amqpTemplateFeign.verifyContent(dataDto);
             //数据解析
             String body = AESUtil.decryptCBC(dataDto.getData(), RabbitMQ.ACC_KEY);
+            item.setDetails(body);
             //数据处理完成状态
             boolean flag = false;
             // 根据类型匹配对象
@@ -121,7 +122,7 @@ public class HtByteTask {
                     flag = FeignFactory.levelOneServerInterface.peopleDto(peopleDto);
                     methodHtByteTask.updateHtByteInfo(flag, item, dataDto);
                     if (!flag) {
-                      StaticLog.error("\n边民信息处理失败。 messageId = " + item.getMessageId() + "\n");
+                        StaticLog.error("\n边民信息处理失败。 messageId = " + item.getMessageId() + "\n");
                     } else {
                         StaticLog.info("\n边民信息处理成功。 messageId = " + item.getMessageId() + "\n");
                     }
@@ -179,8 +180,12 @@ public class HtByteTask {
                     HtTradeSettlement importDeclarePeople = JSONObject.parseObject(body, HtTradeSettlement.class);
                     if (importDeclarePeople == null || !importDeclarePeople.getIEFlag().toLowerCase().contains("i")) {
                         StaticLog.info("出口商品,暂时忽略:{}", body);
+                        item.setFinishStatus(1);
+                        item.setFinishTime(new Date());
+                        htByteMapper.updateById(item);
                         break;
                     }
+                    item.setVeNo(importDeclarePeople.getVeNo());
                     //购买边民列表
                     List<BordersListDto> bordersLists = JSON.parseArray(importDeclarePeople.getBordersList(), BordersListDto.class);
                     if (bordersLists == null) {
@@ -194,7 +199,7 @@ public class HtByteTask {
                     List<SellGoodsListDto> sellGoodsList = JSON.parseArray(importDeclarePeople.getSellGoodsList(), SellGoodsListDto.class);
                     //保存航通监听记录
                     TradeSettlementDto tradeSettlementDto = new TradeSettlementDto();
-                    BeanUtils.copyProperties(importDeclarePeople,tradeSettlementDto);
+                    BeanUtils.copyProperties(importDeclarePeople, tradeSettlementDto);
                     tradeSettlementDto.setBordersListDtoList(bordersLists);
                     tradeSettlementDto.setBorderBuyGoodsListDtoList(buyGoodsList);
                     tradeSettlementDto.setSellGoodsListDtoList(sellGoodsList);
@@ -212,9 +217,13 @@ public class HtByteTask {
                     //放行记录(过卡记录)
                     HtPassCardDTO htPassCardDTO = JSONObject.parseObject(body, HtPassCardDTO.class);
                     //系统接收到航通过卡记录且卡口类型为'3卡':车辆已出一级市场, 修改相对应的一级市场订单状态
-                    if ("3卡".equals(htPassCardDTO.getChannelType())|| StrUtil.contains(htPassCardDTO.getChannelName(),"三卡")) {
+                    if ("3卡".equals(htPassCardDTO.getChannelType()) || StrUtil.contains(htPassCardDTO.getChannelName(), "三卡")) {
                         StaticLog.info("\n3卡放行记录(过卡记录)信息: htPassCardDTO = " + htPassCardDTO.toString() + "\n");
                         flag = FeignFactory.levelOneServerInterface.orderFinish(htPassCardDTO);
+                        item.setDetails(body).setBillCode(htPassCardDTO.getBillCode())
+                                .setVeNo(htPassCardDTO.getVeNo())
+                                .setCheckTime(htPassCardDTO.getCheckTime())
+                        ;
                         methodHtByteTask.updateHtByteInfo(flag, item, dataDto);
                         if (flag) {
                             StaticLog.info("\n3卡放行记录(过卡记录)信息同步处理成功。 messageId = " + item.getMessageId() + "\n");
@@ -226,6 +235,9 @@ public class HtByteTask {
                 case "008":
                     //进口申报单
                     HtImportOrderDto importOrderDto = JSONObject.parseObject(body, HtImportOrderDto.class);
+                    if (importOrderDto != null) {
+                        item.setVeNo(importOrderDto.getVeNo());
+                    }
                     boolean result = FeignFactory.levelOneServerInterface.importOrderDto(importOrderDto);
                     methodHtByteTask.updateHtByteInfo(result, item, dataDto);
                     if (result) {

+ 7 - 7
sp-service/async-server/src/main/java/com/pj/task/MethodHtByteTask.java

@@ -35,11 +35,12 @@ public class MethodHtByteTask {
     private HtByteMapper htByteMapper;
 
     /**
-     *  接收订单推送消息,边民进行交易确认,支付申请,刷脸认证,系统发起进行交易
+     * 接收订单推送消息,边民进行交易确认,支付申请,刷脸认证,系统发起进行交易
+     *
      * @param bordersLists
      */
-    public void sendMessageToPeople(List<HtBordersList> bordersLists){
-        if(bordersLists.size() == 0)return;
+    public void sendMessageToPeople(List<HtBordersList> bordersLists) {
+        if (bordersLists.size() == 0) return;
         //遍历
         bordersLists.forEach(item -> {
             try {
@@ -74,13 +75,13 @@ public class MethodHtByteTask {
     /**
      * 修改ht_byte数据的状态
      */
-    public void updateHtByteInfo(boolean flag, HtByte htByte,DataDto dataDto){
+    public void updateHtByteInfo(boolean flag, HtByte htByte, DataDto dataDto) {
+        htByte.setFinishTime(new Date());
         //处理成功
-        if(flag){
+        if (flag) {
             htByte.setFinishStatus(FinishStatus.FINISH_STATUS_ONE.getCode());
             htByte.setMessageId(dataDto.getMsgId());
             htByte.setDataType(dataDto.getDataType());
-            htByte.setCreateTime(new Date());
             htByteMapper.updateById(htByte);
             return;
         }
@@ -88,7 +89,6 @@ public class MethodHtByteTask {
         htByte.setFinishStatus(FinishStatus.FINISH_STATUS_TWO.getCode());
         htByte.setMessageId(dataDto.getMsgId());
         htByte.setDataType(dataDto.getDataType());
-        htByte.setCreateTime(new Date());
         //保存
         htByteMapper.updateById(htByte);
     }

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

@@ -25,30 +25,8 @@ public class HtTradeSettlementController {
 	@Autowired
 	HtTradeSettlementService htTradeSettlementService;
 
-	/** 增 */
-	@RequestMapping("add")
-	@SaCheckPermission(HtTradeSettlement.PERMISSION_CODE_ADD)
-	public AjaxJson add(HtTradeSettlement h){
-		htTradeSettlementService.add(h);
-		h = htTradeSettlementService.getById(SP.publicMapper.getPrimarykey());
-		return AjaxJson.getSuccessData(h);
-	}
 
-	/** 删 */
-	@RequestMapping("delete")
-	@SaCheckPermission(HtTradeSettlement.PERMISSION_CODE_DEL)
-	public AjaxJson delete(Long id){
-		 htTradeSettlementService.delete(id);
-		return AjaxJson.getSuccess();
-	}
 
-	/** 改 */
-	@RequestMapping("update")
-	@SaCheckPermission(HtTradeSettlement.PERMISSION_CODE_EDIT)
-	public AjaxJson update(HtTradeSettlement h){
-		htTradeSettlementService.update(h);
-		return AjaxJson.getSuccess();
-	}
 
 	/** 查 - 根据id */
 	@RequestMapping("getById")

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

@@ -1,5 +1,7 @@
 package com.pj.ht_trade_settlement;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.pj.utils.so.SoMap;
 import org.apache.ibatis.annotations.Mapper;
@@ -9,22 +11,29 @@ import java.util.List;
 
 /**
  * Mapper: ht_trade_settlement -- 航通交易结算表
- * @author yzs 
+ *
+ * @author yzs
  */
 
 @Mapper
 @Repository
-public interface HtTradeSettlementMapper extends BaseMapper <HtTradeSettlement> {
+public interface HtTradeSettlementMapper extends BaseMapper<HtTradeSettlement> {
 
 
-
-	/**
-	 * 查集合 - 根据条件(参数为空时代表忽略指定条件)
-	 * @param so 参数集合 
-	 * @return 数据列表 
-	 */
-	List<HtTradeSettlement> getList(SoMap so);
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     *
+     * @param so 参数集合
+     * @return 数据列表
+     */
+    List<HtTradeSettlement> getList(SoMap so);
 
 
     List<HtTradeSettlement> getOnSaleList(SoMap so);
+
+    default HtTradeSettlement findByManifestId(String manifestId) {
+        LambdaQueryWrapper<HtTradeSettlement> ew = new LambdaQueryWrapper<>();
+        ew.eq(HtTradeSettlement::getVoyageNo, manifestId);
+        return selectOne(ew);
+    }
 }

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

@@ -154,6 +154,14 @@ public class HtTradeSettlementService extends ServiceImpl<HtTradeSettlementMappe
             BeanUtils.copyProperties(item, tbOrder);
             String tradeNo = "YJSCDD".concat(dateStr)
                     .concat(RandomUtil.randomNumbers(5) + "0");
+            while (true){
+                TbOrder db= tbOrderMapper.findByTradeNo(tradeNo);
+                if (db==null){
+                    break;
+                }
+                "YJSCDD".concat(dateStr)
+                        .concat(RandomUtil.randomNumbers(5) + "0");
+            }
             tbOrder.setSaleMainId(htTradeSettlement.getId());
             tbOrder.setCreateTime(now).setPreNo(item.getPreNo())
                     .setTradeNo(tradeNo)
@@ -220,4 +228,8 @@ public class HtTradeSettlementService extends ServiceImpl<HtTradeSettlementMappe
     public List<HtTradeSettlement> getOnSaleList(SoMap startPage) {
         return htTradeSettlementMapper.getOnSaleList(startPage);
     }
+
+    public HtTradeSettlement findByManifestId(String manifestId) {
+        return htTradeSettlementMapper.findByManifestId(manifestId);
+    }
 }

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

@@ -165,4 +165,8 @@ public class TbGoodsUnitsService extends ServiceImpl<TbGoodsUnitsMapper, TbGoods
         return list.isEmpty() ? null : list.get(0);
     }
 
+    public TbGoodsUnits findByUnitName(String goodsUnitName) {
+        List<TbGoodsUnits> list = tbGoodsUnitsMapper.selectList(new LambdaQueryWrapper<TbGoodsUnits>().eq(TbGoodsUnits::getUnits, goodsUnitName));
+        return list.isEmpty() ? null : list.get(0);
+    }
 }

+ 0 - 38
sp-service/level-one-server/src/main/java/com/pj/tb_import_order/TbImportOrderController.java

@@ -25,47 +25,9 @@ public class TbImportOrderController {
 	@Autowired
 	TbImportOrderService tbImportOrderService;
 
-	/** 增 */
-	@RequestMapping("add")
-	@SaCheckPermission(TbImportOrder.PERMISSION_CODE_ADD)
-	public AjaxJson add(TbImportOrder t){
-		tbImportOrderService.add(t);
-		t = tbImportOrderService.getById(SP.publicMapper.getPrimarykey());
-		return AjaxJson.getSuccessData(t);
-	}
-
-	/** 删 */
-	@RequestMapping("delete")
-	@SaCheckPermission(TbImportOrder.PERMISSION_CODE_DEL)
-	public AjaxJson delete(Long id){
-		 tbImportOrderService.delete(id);
-		return AjaxJson.getSuccess();
-	}
 
-	/** 删 - 根据id列表 */
-	@RequestMapping("deleteByIds")
-	@SaCheckPermission(TbImportOrder.PERMISSION_CODE_DEL)
-	public AjaxJson deleteByIds(){
-		List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
-		int line = SP.publicMapper.deleteByIds(TbImportOrder.TABLE_NAME, ids);
-		return AjaxJson.getByLine(line);
-	}
 
-	/** 改 */
-	@RequestMapping("update")
-	@SaCheckPermission(TbImportOrder.PERMISSION_CODE_EDIT)
-	public AjaxJson update(TbImportOrder t){
-		tbImportOrderService.update(t);
-		return AjaxJson.getSuccess();
-	}
 
-	/** 查 - 根据id */
-	@RequestMapping("getById")
-		@SaCheckPermission(TbImportOrder.PERMISSION_CODE)
-	public AjaxJson getById(Long id){
-		TbImportOrder t = tbImportOrderService.getById(id);
-		return AjaxJson.getSuccessData(t);
-	}
 
 	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
 	@RequestMapping("getList")

+ 18 - 11
sp-service/level-one-server/src/main/java/com/pj/tb_import_order/TbImportOrderService.java

@@ -1,7 +1,9 @@
 package com.pj.tb_import_order;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -13,6 +15,7 @@ import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.current.satoken.StpAPPUserUtil;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.project4sp.SP;
+import com.pj.project4sp.public4mapper.PublicMapper;
 import com.pj.tb_import_goods.TbImportGoods;
 import com.pj.tb_import_goods.TbImportGoodsMapper;
 import com.pj.tb_order.TbOrder;
@@ -116,8 +119,10 @@ public class TbImportOrderService extends ServiceImpl<TbImportOrderMapper, TbImp
      */
     public boolean importOrderDto(HtImportOrderDto importOrderDto) {
         //委托边民额度
-        List<HtIeportDeclBillsBpLimitDto> ieportDeclBillsBpLimitDtoList = JSON.parseArray(importOrderDto.getBorderPeopleLimitList(), HtIeportDeclBillsBpLimitDto.class);
-        ieportDeclBillsBpLimitDtoList.forEach(ieportDeclBillsBpLimitDto -> {
+        List<HtIeportDeclBillsBpLimitDto> ieportDeclBillsBpLimitDtoList =
+                JSON.parseArray(importOrderDto.getBorderPeopleLimitList(), HtIeportDeclBillsBpLimitDto.class);
+        List<TbOrder>orders=new ArrayList<>();
+        ieportDeclBillsBpLimitDtoList.parallelStream().forEach(ieportDeclBillsBpLimitDto -> {
             String peopleIdCardNo = ieportDeclBillsBpLimitDto.getCiphertextIdno();
             TbImportOrder importOrder = tbImportOrderMapper.findByManifestId(importOrderDto.getManifestId(), peopleIdCardNo);
             if (importOrder == null) {
@@ -131,16 +136,18 @@ public class TbImportOrderService extends ServiceImpl<TbImportOrderMapper, TbImp
                     .setPeopleName(ieportDeclBillsBpLimitDto.getBorderName())
                     .setGGrossWt(ieportDeclBillsBpLimitDto.getgGrossWt());
             saveOrUpdate(importOrder);
-            long importOrderId = importOrder.getId();
-            LambdaUpdateWrapper<TbOrder> wrapper = new LambdaUpdateWrapper<>();
-            wrapper.set(TbOrder::getLimitNo, ieportDeclBillsBpLimitDto.getLimitNo());
-            wrapper.set(TbOrder::getGLimit, ieportDeclBillsBpLimitDto.getgLimit());
-            wrapper.set(TbOrder::getGNo, ieportDeclBillsBpLimitDto.getgNo());
-            wrapper.set(TbOrder::getImportOrderId, importOrderId);
-            wrapper.eq(TbOrder::getPreIeportNo, ieportDeclBillsBpLimitDto.getPlatSeqNo());
-            wrapper.eq(TbOrder::getIdno, peopleIdCardNo);
-            tbOrderService.update(wrapper);
+            long importOrderId = SP.publicMapper.getPrimarykey();
+            String preIeportNo=ieportDeclBillsBpLimitDto.getPlatSeqNo();
+           TbOrder tbOrder= tbOrderService.findByPreIeportNoAndIdno(preIeportNo,peopleIdCardNo);
+           if (tbOrder!=null){
+               tbOrder.setLimitNo(ieportDeclBillsBpLimitDto.getLimitNo())
+                      .setGLimit(ieportDeclBillsBpLimitDto.getgLimit())
+                      .setGNo(ieportDeclBillsBpLimitDto.getgNo())
+                      .setImportOrderId(importOrderId);
+               orders.add(tbOrder);
+           }
         });
+        tbOrderService.updateBatchById(orders);
         return true;
     }
 }

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

@@ -496,7 +496,7 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	/**
 	 * 商品额度
 	 */
-	private Double gLimit;
+	private String gLimit;
 
 	/**
 	 * 商品序号
@@ -577,4 +577,8 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
 	 * 是否扣除服务点费(0=未扣除,1=已扣除)
 	 */
 	private Integer isCheckoffWallet;
+
+	private Integer clearanceStatus;
+
+	private Date clearanceDate;
 }

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

@@ -245,9 +245,5 @@ public class TbOrderController {
         return tbOrderService.orderFinish(htPassCardDTO);
     }
 
-    public static void main(String[] args) {
-        System.out.println(RandomUtil.randomString(32));
-    }
-
 
 }

+ 22 - 10
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderMapper.java

@@ -2,35 +2,47 @@ package com.pj.tb_order;
 
 import java.util.List;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.pj.current.mybatis.DataScope;
 import com.pj.tb_order.vo.ConfirmVo;
 import org.apache.ibatis.annotations.Mapper;
 
 import com.pj.utils.so.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 /**
  * Mapper: tb_order -- 订单表
+ *
  * @author loovi
  */
 
 @Mapper
 @Repository
-public interface TbOrderMapper extends BaseMapper <TbOrder> {
+public interface TbOrderMapper extends BaseMapper<TbOrder> {
 
 
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     *
+     * @param so 参数集合
+     * @return 数据列表
+     */
+    List<TbOrder> getList(SoMap so);
 
-	/**
-	 * 查集合 - 根据条件(参数为空时代表忽略指定条件)
-	 * @param so 参数集合
-	 * @return 数据列表
-	 */
-	List<TbOrder> getList(SoMap so);
+    ConfirmVo getConfirmStatus(Long orderId);
 
-	ConfirmVo getConfirmStatus(Long orderId);
-
-	List<TbOrder> getOnSaleList(SoMap so);
+    List<TbOrder> getOnSaleList(SoMap so);
 
     double sumUpPrice(Long htTradeSettlementId);
+
+    default TbOrder findByPreIeportNoAndIdno(String preIeportNo, String peopleIdCardNo) {
+        LambdaQueryWrapper<TbOrder> ew = new LambdaQueryWrapper<>();
+        ew.eq(TbOrder::getPreIeportNo, preIeportNo).eq(TbOrder::getIdno, peopleIdCardNo);
+        return selectOne(ew);
+    }
+
+    TbOrder findByTradeNo(@Param("tradeNo") String tradeNo);
 }

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

@@ -207,6 +207,9 @@
     <select id="sumUpPrice" resultType="java.lang.Double">
 		select sum(up_price) from tb_order where sale_main_id=#{htTradeSettlementId}
 	</select>
+    <select id="findByTradeNo" resultType="com.pj.tb_order.TbOrder">
+		select id from tb_order where trade_no=#{tradeNo}
+	</select>
 
 
 </mapper>

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

@@ -35,6 +35,8 @@ import com.pj.tb_enterprise.TbEnterpriseMapper;
 import com.pj.tb_goods_transit.TbGoodsTransit;
 import com.pj.tb_goods_transit.TbGoodsTransitMapper;
 import com.pj.tb_goods_transit.TbGoodsTransitService;
+import com.pj.tb_goods_units.TbGoodsUnits;
+import com.pj.tb_goods_units.TbGoodsUnitsService;
 import com.pj.tb_import_order.TbImportOrder;
 import com.pj.tb_import_order.TbImportOrderMapper;
 import com.pj.tb_order.vo.ConfirmVo;
@@ -98,12 +100,10 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
     private TbGoodsTransitService tbGoodsTransitService;
     @Autowired
     private LevelOneServerInterface levelOneServerInterface;
-    @Autowired
-    private LevelTwoServerInterface levelTwoServerInterface;
+
     @Autowired
     private TbEnterpriseMapper tbEnterpriseMapper;
-    @Autowired
-    private AsyncServerInterface asyncServerInterface;
+
     @Autowired
     private TbPeopleMapper tbPeopleMapper;
     @Autowired
@@ -114,6 +114,8 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
     private PaymentServerInterface paymentServerInterface;
     @Resource
     private TbWalletTopupService tbWalletTopupService;
+    @Resource
+    private TbGoodsUnitsService tbGoodsUnitsService;
 
 
     /**
@@ -785,7 +787,11 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
             tradeNo = tradeNo + deductionCount;
             tbOrder.setTradeNo(tradeNo);
         }
-        PaymentDto paymentDto = this.getPaymentData(tbOrder);
+        TbOrder copyOrder = new TbOrder();
+        BeanUtils.copyProperties(tbOrder, copyOrder);
+        TbGoodsUnits tbGoodsUnits = tbGoodsUnitsService.findByUnitName(tbOrder.getGoodsUnit());
+        copyOrder.setGoodsUnit(tbGoodsUnits.getUnits());
+        PaymentDto paymentDto = this.getPaymentData(copyOrder);
         StaticLog.info("\n---订单补扣款---sendSXB010——PaymentDto——:{}", JSONUtil.toJsonStr(paymentDto));
         paymentServerInterface.sendSXB010(paymentDto);
         tbOrder.setDeductionCount(deductionCount);
@@ -834,7 +840,7 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
 
     List<TbOrder> getDeductionByVeNoList(SoMap so) {
         LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(TbOrder::getVeNo, so.getString("veNo"));
+//        wrapper.eq(TbOrder::getVeNo, so.getString("veNo"));
         wrapper.eq(TbOrder::getSaleMainId, so.getLong("id"));
         wrapper.ne(TbOrder::getSxb010Status, 1).orderByDesc(TbOrder::getCreateTime);
         List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
@@ -1019,11 +1025,17 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
             StaticLog.error("Invalid bill code:{}", JSONUtil.toJsonStr(htPassCardDTO));
             return false;
         }
+        String manifestId = htPassCardDTO.getManifestId();
         //获取出了一级市场的所有边民订单
         LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
         wrapper.in(TbOrder::getPreIeportNo, billCodeList);
-        wrapper.ne(TbOrder::getFinishStatus, 1).orderByDesc(TbOrder::getCreateTime);
+        wrapper.orderByDesc(TbOrder::getCreateTime);
         List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
+        if (tbOrders.isEmpty()) {
+            HtTradeSettlement htTradeSettlement = htTradeSettlementService.findByManifestId(manifestId);
+            wrapper.or().eq(TbOrder::getSaleMainId, htTradeSettlement.getId());
+            tbOrders = tbOrderMapper.selectList(wrapper);
+        }
         if (!tbOrders.isEmpty()) {
             String tradeNos = "";
             PaymentDto paymentDto = new PaymentDto();
@@ -1034,17 +1046,17 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
                 tbOrder.setFinishStatus(FinishStatus.FINISH_STATUS_ONE.getCode());
                 tbOrder.setChannelNo(htPassCardDTO.getChannelNo());
                 tbOrder.setCheckTime(htPassCardDTO.getCheckTime());
-
-                //todo: 收到航通007报文即收到海关结关信息,转发结关信息给到银行
-                paymentDto.setTradeNo(tbOrder.getTradeNo());
-
-                String date = htPassCardDTO.getCheckTime().concat(" ").concat(RandomUtil.randomNumbers(3));
-                paymentDto.setDeclTime(date);
-                paymentDto.setFieldCode(htPassCardDTO.getAreaNo());
-                paymentDto.setChannelNo(htPassCardDTO.getChannelNo());
-                paymentDto.setTrans(tbOrder.getPlatSeqNo());
-                StaticLog.info("\nsendCXB001——PaymentDto——:{}", JSONUtil.toJsonStr(paymentDto));
-                paymentServerInterface.sendCXB001(paymentDto);
+                if (tbOrder.getSxb010Status() == 1) {
+                    //todo: 已经付款的才发送结关,收到航通007报文即收到海关结关信息,转发结关信息给到银行
+                    paymentDto.setTradeNo(tbOrder.getTradeNo());
+                    String date = htPassCardDTO.getCheckTime().concat(" ").concat(RandomUtil.randomNumbers(3));
+                    paymentDto.setDeclTime(date);
+                    paymentDto.setFieldCode(htPassCardDTO.getAreaNo());
+                    paymentDto.setChannelNo(htPassCardDTO.getChannelNo());
+                    paymentDto.setTrans(tbOrder.getPlatSeqNo());
+                    StaticLog.info("\nsendCXB001——PaymentDto——:{}", JSONUtil.toJsonStr(paymentDto));
+                    paymentServerInterface.sendCXB001(paymentDto);
+                }
             }
             this.updateBatchById(tbOrders);
 
@@ -1091,8 +1103,8 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
                 order.setTradeStatus(TradeStatus.TRADE_STATUS_ONE.getCode()); //打款成功
                 order.setTradeTime(new Date()); //打款回执时间
                 order.setPayType(0); //支付类型
-                order.setFinishStatus(FinishStatus.FINISH_STATUS_ONE.getCode()); //已完成->完成后可以进行转售
-                order.setFinishTime(new Date());
+                order.setClearanceStatus(FinishStatus.FINISH_STATUS_ONE.getCode()); //已完成->完成后可以进行转售
+                order.setClearanceDate(new Date());
                 order.setUpdateTime(new Date());
 
                 boolean result = updateById(order);
@@ -1151,6 +1163,12 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
         TbOrder byId = super.getById(id);
         OrderDto orderDto = new OrderDto();
         BeanUtils.copyProperties(byId, orderDto);
+        String goodsUnitName = byId.getGoodsUnit();
+        TbGoodsUnits tbGoodsUnits = tbGoodsUnitsService.findByUnitName(goodsUnitName);
+        if (tbGoodsUnits == null) {
+            return null;
+        }
+        orderDto.setGoodsUnit(tbGoodsUnits.getUnitsNo());
         return orderDto;
     }
 
@@ -1324,4 +1342,8 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
     public double sumUpPrice(Long htTradeSettlementId) {
         return tbOrderMapper.sumUpPrice(htTradeSettlementId);
     }
+
+    public TbOrder findByPreIeportNoAndIdno(String preIeportNo, String peopleIdCardNo) {
+        return tbOrderMapper.findByPreIeportNoAndIdno(preIeportNo, peopleIdCardNo);
+    }
 }

+ 6 - 6
sp-service/level-one-server/src/main/java/com/pj/tb_wallet_record/TbWalletAppController.java

@@ -231,7 +231,7 @@ public class TbWalletAppController {
      */
     @RequestMapping("topdownSave")
     public AjaxJson topdownSave(@RequestParam("amount") Integer amount, @RequestParam("goodsName") String goodsName) {
-        if (!StpAPPUserUtil.isLogin()){
+        if (!StpAPPUserUtil.isLogin()) {
             return AjaxJson.getError("请先登录!");
         }
         //获取登录人
@@ -256,17 +256,17 @@ public class TbWalletAppController {
         List<TbWalletTopup> list = tbWalletTopupService.findRefundList(tbPeople.getId());
 
         for (TbWalletTopup tbWalletTopup : list) {
-            int refundCount=tbWalletTopup.getRefundCount();
+            int refundCount = tbWalletTopup.getRefundCount();
             //剩余提现点数
             int refundMoney = tbWalletTopup.getAmount() - tbWalletTopup.getCutCount() - refundCount;
             if (refundMoney > amount) {
                 //提不完
                 refundMoney = amount;
-                tbWalletTopup.setRefundCount(amount+refundCount);
+                tbWalletTopup.setRefundCount(amount + refundCount);
                 amount = 0;
             } else {
                 //一次性提完一个充值单
-                tbWalletTopup.setRefundCount(refundMoney+refundCount);
+                tbWalletTopup.setRefundCount(refundMoney + refundCount);
                 amount = amount - refundMoney;
             }
             int total = BaseWxPayRequest.yuanToFen(tbWalletTopup.getAmount() + "");
@@ -290,13 +290,13 @@ public class TbWalletAppController {
             if (amount == 0) {
                 break;
             }
+            tbWalletTopdownService.save(tbWalletTopdown);
         }
         // 成功
         tbWalletTopdown.setPayStatus(2);
-        tbWalletTopdownService.save(tbWalletTopdown);
+
         tbPeopleService.updateById(tbPeople);
         return AjaxJson.getSuccess();
-
     }
 
     /**

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

@@ -37,7 +37,6 @@
 			<if test=' this.has("updateName") '> and w.update_name = #{updateName} </if>
 			<if test=' this.has("updateTime") '> and w.update_time = #{updateTime} </if>
 			<if test=' this.has("deleteStatus") '> and w.delete_status = #{deleteStatus} </if>
-			<if test=' this.has("peopleName") '> and p.name = #{peopleName} </if>
 		</where>
 		order by
 		<choose>

+ 7 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/TbWalletTopupController.java

@@ -15,6 +15,7 @@ import com.github.binarywang.wxpay.service.WxPayService;
 import com.pj.tb_wallet_topup.vo.ValletTopupVo;
 import com.pj.utils.so.SoMap;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -68,6 +69,12 @@ public class TbWalletTopupController {
         Integer sum= tbWalletTopupService.getSum();
         return AjaxJson.getSuccessData(sum);
     }
+    @RequestMapping("checkStatus")
+    @SaCheckPermission(TbWalletTopup.PERMISSION_CODE)
+    public AjaxJson checkStatus(String id) {
+        String status = tbWalletTopupService.checkStatus(id);
+        return AjaxJson.getSuccessData(status);
+    }
 
 
 }

+ 7 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/TbWalletTopupMapper.java

@@ -48,4 +48,11 @@ public interface TbWalletTopupMapper extends BaseMapper<TbWalletTopup> {
     void cancelTopup(@Param("outTradeNo") String outTradeNo);
 
     Integer getSum();
+
+    default List<TbWalletTopup> findCancelList() {
+        QueryWrapper<TbWalletTopup> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbWalletTopup::getPayStatus, 3);
+        return selectList(ew);
+    }
+
 }

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

@@ -40,6 +40,7 @@
 			<if test=' this.has("updateTime") '> and w.update_time = #{updateTime} </if>
 			<if test=' this.has("updateBy") '> and w.update_by = #{updateBy} </if>
 			<if test=' this.has("updateName") '> and w.update_name = #{updateName} </if>
+			<if test=' this.has("updateName") '> and w.update_name = #{updateName} </if>
 			<if test=' this.has("payStatus") '> and w.pay_status = #{payStatus} </if>
 		</where>
 		order by

+ 54 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/TbWalletTopupService.java

@@ -154,6 +154,15 @@ public class TbWalletTopupService extends ServiceImpl<TbWalletTopupMapper, TbWal
         appServiceExtension.closeOrder(request);
     }
 
+    public Transaction queryOrder(String outTradeNo) {
+        QueryOrderByOutTradeNoRequest request = new QueryOrderByOutTradeNoRequest();
+        // 调用request.setXxx(val)设置所需参数,具体参数可见Request定义
+        request.setMchid(wxPayProperties.getMchId());
+        request.setOutTradeNo(outTradeNo);
+        // 调用接口
+        return appServiceExtension.queryOrderByOutTradeNo(request);
+    }
+
     public TbWalletTopup getByPrePayId(String prePayId) {
         return tbWalletTopupMapper.getByPrePayId(prePayId);
     }
@@ -193,4 +202,49 @@ public class TbWalletTopupService extends ServiceImpl<TbWalletTopupMapper, TbWal
                 .orderByAsc(TbWalletTopup::getCreateTime);
         return list(ew);
     }
+
+    public String checkStatus(String id) {
+        TbWalletTopup tbWalletTopup = this.getById(id);
+        if (tbWalletTopup.getPayStatus() == 2) {
+            return "SUCCESS";
+        }
+        Transaction transaction = queryOrder(tbWalletTopup.getOutTradeNo());
+        String status = transaction.getTradeState().name();
+        if (status.equals("SUCCESS")) {
+            tbWalletTopup.setPayStatus(2).setSuccessTime(transaction.getSuccessTime())
+                    .setTransactionId(transaction.getTransactionId())
+                    .setOpenid(transaction.getPayer().getOpenid())
+                    .setUpdateTime(new Date());
+            this.updateById(tbWalletTopup);
+            tbPeopleService.updatePeopleWallet(tbWalletTopup.getPeopleId(), tbWalletTopup.getAmount());
+        } else if (status.equals("CLOSED")) {
+            tbWalletTopup.setPayStatus(-1);
+            this.updateById(tbWalletTopup);
+        }
+        return status;
+    }
+    public String checkStatus(TbWalletTopup tbWalletTopup) {
+        Transaction transaction = queryOrder(tbWalletTopup.getOutTradeNo());
+        String status = transaction.getTradeState().name();
+        if (status.equals("SUCCESS")) {
+            tbWalletTopup.setPayStatus(2).setSuccessTime(transaction.getSuccessTime())
+                    .setTransactionId(transaction.getTransactionId())
+                    .setOpenid(transaction.getPayer().getOpenid())
+                    .setUpdateTime(new Date());
+            this.updateById(tbWalletTopup);
+            tbPeopleService.updatePeopleWallet(tbWalletTopup.getPeopleId(), tbWalletTopup.getAmount());
+        } else if (status.equals("CLOSED")) {
+            tbWalletTopup.setPayStatus(-1);
+            this.updateById(tbWalletTopup);
+        }else if (status.equals("NOTPAY")){
+            tbWalletTopup.setPayStatus(-2);
+            closeOrder(tbWalletTopup.getOutTradeNo());
+            this.updateById(tbWalletTopup);
+        }
+        return status;
+    }
+
+    public List<TbWalletTopup> findCancelList() {
+        return tbWalletTopupMapper.findCancelList();
+    }
 }

+ 30 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/task/QueryRefundTask.java

@@ -0,0 +1,30 @@
+package com.pj.tb_wallet_topup.task;
+
+import com.pj.tb_wallet_record.WxPayProperties;
+import com.pj.tb_wallet_topup.TbWalletTopupService;
+import com.pj.utils.cache.RedisUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Component
+@Slf4j
+public class QueryRefundTask {
+    @Resource
+    private WxPayProperties wxPayProperties;
+    @Resource
+    private TbWalletTopupService tbWalletTopupService;
+
+    @Scheduled(cron = "0/5 * * * * ?")  //每3秒执行一次
+    public void query() {
+        String key = wxPayProperties.getMchId() + "-" + wxPayProperties.getAppId();
+        List<Object> list = RedisUtil.forListGet(key);
+        for (Object tradeObj : list) {
+            String tradeNo = tradeObj.toString();
+            tbWalletTopupService.handlerTopup(tradeNo);
+        }
+    }
+}

+ 22 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_wallet_topup/task/StartUp.java

@@ -0,0 +1,22 @@
+package com.pj.tb_wallet_topup.task;
+
+import com.pj.tb_wallet_topup.TbWalletTopup;
+import com.pj.tb_wallet_topup.TbWalletTopupService;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+@Component
+public class StartUp implements CommandLineRunner {
+    @Resource
+    private TbWalletTopupService tbWalletTopupService;
+
+    @Override
+    public void run(String... args) throws Exception {
+        List<TbWalletTopup> tbWalletTopups = tbWalletTopupService.findCancelList();
+        tbWalletTopups.parallelStream().forEach(tbWalletTopup -> {
+            tbWalletTopupService.checkStatus(tbWalletTopup);
+        });
+    }
+}

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

@@ -1,5 +1,7 @@
 package com.pj.tb_orders;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -25,6 +27,8 @@ import com.pj.project4sp.SP;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 
+import javax.annotation.Resource;
+
 
 /**
  * Controller: tb_orders -- 订单表
@@ -42,6 +46,7 @@ public class TbOrdersController {
     TbOrdersService tbOrdersService;
 
 
+
     @RequestMapping("addOrderByResale")
     @SaCheckPermission(TbOrders.PERMISSION_CODE_EDIT_PRICE)
     public AjaxJson addOrderByResale(Long id) {
@@ -53,6 +58,9 @@ public class TbOrdersController {
         if (db != null) {
             throw new AjaxError(orderDto.getTradeNo() + "已转售,请联系管理员处理");
         }
+        BigDecimal upPrince = orderDto.getUpPrice();
+        Double netWeight = orderDto.getNetWt();
+        BigDecimal singlePrice = upPrince.divide(new BigDecimal(netWeight + ""), 2, RoundingMode.HALF_UP);
         TbOrders orders = new TbOrders();
         orders.setResalePrice(orderDto.getUpPrice().doubleValue());
         orders.setLevelOneOrderId(id);
@@ -64,7 +72,7 @@ public class TbOrdersController {
                 .setGoodsUnit(orderDto.getGoodsUnit())
                 .setNetWet(orderDto.getNetWt() + "")
                 .setTotalWeight(orderDto.getTotalWeight() + "")
-                .setSinglePrice(orderDto.getDeclPrice().toString())
+                .setSinglePrice(singlePrice.doubleValue() + "")
         ;
 
         //订单编号:EJSCDD=二级市场订单

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

@@ -141,37 +141,38 @@ public class TbOrdersService extends ServiceImpl<TbOrdersMapper, TbOrders> imple
         paymentTwoDto.setNetWt(orderOne.getNetWt());
         paymentTwoDto.setGoodsName(orderOne.getGoodsNames());
         paymentTwoDto.setGoodsUnit(orderOne.getGoodsUnit());
-        paymentTwoDto.setDeclPrice(orderOne.getDeclPrice());
+        paymentTwoDto.setDeclPrice(Double.parseDouble(t.getSinglePrice()));
+        paymentTwoDto.setAmount(t.getResalePrice());
         paymentTwoDto.setCodeTs(orderOne.getCodeTs());
 
         PeopleDto tbPeople = levelOneServerInterface.getRpcById(orderOne.getBuyUserId());
         StaticLog.info("边民tbPeople:{}", JSONUtil.toJsonStr(tbPeople));
-        if (tbPeople != null) {
-            paymentTwoDto.setBankCode(tbPeople.getBankCode());
-            paymentTwoDto.setBankName(tbPeople.getBankName());
-            paymentTwoDto.setBankNo(tbPeople.getBankNo());
-            paymentTwoDto.setBorderName(tbPeople.getName());
-            paymentTwoDto.setBorderidno(tbPeople.getIdCard());
-            paymentTwoDto.setBorderTel(tbPeople.getPhone());
-            paymentTwoDto.setPapersType(tbPeople.getPapersType());
-            paymentTwoDto.setBorderNationality(tbPeople.getNationality());
+        if (tbPeople == null || StrUtil.isEmpty(tbPeople.getBankCode())) {
+            throw new AjaxError(orderOne.getBuyUserName() + "的银行信息不全");
         }
-
+        paymentTwoDto.setBankCode(tbPeople.getBankCode());
+        paymentTwoDto.setBankName(tbPeople.getBankName());
+        paymentTwoDto.setBankNo(tbPeople.getBankNo());
+        paymentTwoDto.setBorderName(tbPeople.getName());
+        paymentTwoDto.setBorderidno(tbPeople.getIdCard());
+        paymentTwoDto.setBorderTel(tbPeople.getPhone());
+        paymentTwoDto.setPapersType(tbPeople.getPapersType());
+        paymentTwoDto.setBorderNationality(tbPeople.getNationality());
         TbPurchaser purchaser = tbPurchaserMapper.selectById(t.getPurchaserId());
         StaticLog.info("采购商purchaser:{}", JSONUtil.toJsonStr(purchaser));
-        if (purchaser != null) {
-            paymentTwoDto.setPcName(purchaser.getBusinessName());
-            if (purchaser.getType() == 2) {
-                paymentTwoDto.setPcName(purchaser.getName());
-            }
-            paymentTwoDto.setDutyParagraph(purchaser.getDutyParagraph());
-            paymentTwoDto.setPcBankAccount(purchaser.getBankAccount());
-            paymentTwoDto.setPcBankNo(purchaser.getBankNo());
-            paymentTwoDto.setPcContact(purchaser.getContact());
-            paymentTwoDto.setPcIdCard(purchaser.getIdCard());
-            paymentTwoDto.setPcType(purchaser.getType());
+        if (purchaser == null || StrUtil.isEmpty(purchaser.getBankNo())) {
+            throw new AjaxError(t.getPurchaserName() + "的银行信息不全");
         }
-
+        paymentTwoDto.setPcName(purchaser.getBusinessName());
+        if (purchaser.getType() == 2) {
+            paymentTwoDto.setPcName(purchaser.getName());
+        }
+        paymentTwoDto.setDutyParagraph(purchaser.getDutyParagraph());
+        paymentTwoDto.setPcBankAccount(purchaser.getBankAccount());
+        paymentTwoDto.setPcBankNo(purchaser.getBankNo());
+        paymentTwoDto.setPcContact(purchaser.getContact());
+        paymentTwoDto.setPcIdCard(purchaser.getIdCard());
+        paymentTwoDto.setPcType(purchaser.getType());
         return paymentTwoDto;
     }
 

+ 0 - 28
sp-service/payment-server/src/main/java/com/pj/bank_info/BankInfoController.java

@@ -42,36 +42,8 @@ public class BankInfoController {
         return AjaxJson.getSuccessData(b);
     }
 
-    /**
-     * 删
-     */
-    @RequestMapping("delete")
-    @SaCheckPermission(BankInfo.PERMISSION_CODE_DEL)
-    public AjaxJson delete(Long id) {
-        bankInfoService.delete(id);
-        return AjaxJson.getSuccess();
-    }
 
-    /**
-     * 删 - 根据id列表
-     */
-    @RequestMapping("deleteByIds")
-    @SaCheckPermission(BankInfo.PERMISSION_CODE_DEL)
-    public AjaxJson deleteByIds() {
-        List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
-        int line = SP.publicMapper.deleteByIds(BankInfo.TABLE_NAME, ids);
-        return AjaxJson.getByLine(line);
-    }
 
-    /**
-     * 改
-     */
-    @RequestMapping("update")
-    @SaCheckPermission(BankInfo.PERMISSION_CODE_EDIT)
-    public AjaxJson update(BankInfo b) {
-        bankInfoService.update(b);
-        return AjaxJson.getSuccess();
-    }
 
     /**
      * 查 - 根据id

+ 25 - 11
sp-service/payment-server/src/main/java/com/pj/utils/CryptoUtil.java

@@ -1,10 +1,14 @@
 package com.pj.utils;
 
 
+import cn.hutool.core.util.XmlUtil;
 import org.bouncycastle.jce.interfaces.ECPublicKey;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 import java.nio.charset.StandardCharsets;
 import java.security.Security;
@@ -12,14 +16,15 @@ import java.security.Security;
 //报文验签&解密
 public class CryptoUtil {
     //private final static String sm4Key="56b5f803c4eeaf9bc9322b46c95b8145";//测试
-    private final static String sm4Key="0c1a54cf431473b8f11d74da7e1fa504";//生产
+    private final static String sm4Key = "0c1a54cf431473b8f11d74da7e1fa504";//生产
 
     private static Logger logger = LoggerFactory.getLogger(CryptoUtil.class);
-    static{
+
+    static {
         Security.addProvider(new BouncyCastleProvider());
     }
 
-    public static String getDecrypt(String m,String sm4Key,String sm2Key) throws Exception{
+    public static String getDecrypt(String m, String sm4Key, String sm2Key) throws Exception {
         logger.info("原文: {}", m);
         Encoder encoder = Encoder.Hex;
         byte[] mtextByte = Encoder.Hex.decode(m);
@@ -41,21 +46,21 @@ public class CryptoUtil {
         // SM2验签
         ECPublicKey pub = SM2.recoveryPubKeyFromQ(encoder.decode(sm2Key));
         logger.info("SM2 - 验签结果 - {}", SM2.verify(pub, null, plainBytesDecrypted, signature));
-        if(!SM2.verify(pub, null, plainBytesDecrypted, signature)){
+        if (!SM2.verify(pub, null, plainBytesDecrypted, signature)) {
             throw new Exception("验签未通过!!");
         }
         return new String(plainBytesDecrypted, "UTF-8");
     }
 
     public static String encrypt(String m) {
-        return encrypt(m,sm4Key);
+        return encrypt(m, sm4Key);
     }
 
     public static String decrypt(String m) {
-        return decrypt(m,sm4Key);
+        return decrypt(m, sm4Key);
     }
 
-    public static String encrypt(String m,String sm4Key) {
+    public static String encrypt(String m, String sm4Key) {
         logger.info("原文: {}", m);
         Encoder encoder = Encoder.Hex;
         SM4 SM4_key = SM4.recovery(sm4Key);
@@ -66,21 +71,30 @@ public class CryptoUtil {
         return plainEncrypted;
     }
 
-    public static String decrypt(String m,String sm4Key) {
-        logger.debug("原文: {}", m);
+    public static String decrypt(String m, String sm4Key) {
+        logger.info("原文: {}", m);
         Encoder encoder = Encoder.Hex;
         byte[] mtextByte = Encoder.Hex.decode(m);
         SM4 SM4_key = SM4.recovery(sm4Key);
         byte[] keyBytes = encoder.decode(sm4Key); // 从交换编码密钥字符串还原为密钥字节码
         byte[] plainBytesDecrypted = SM4.decrypt(keyBytes, mtextByte, SM4_key.getTransformation()); // 解密后字节码
-        logger.debug("解密出来的 明文:{}", new String(plainBytesDecrypted, StandardCharsets.UTF_8));
+        logger.info("解密出来的 明文:{}", new String(plainBytesDecrypted, StandardCharsets.UTF_8));
         return new String(plainBytesDecrypted, StandardCharsets.UTF_8);
     }
 
 
     public static void main(String[] args) {
-        String srt="10647709f1b40467917932891d4360bb4759d7b45a931e416fdefc176ece24b941ddd67999dde1e03377cf8ab903abe8cda5e57d8d0f82892a0717fb14faa0fd3604ba07c632ff8c70a9cdf821ff82732122cf2dba8b3e6587cab29ac8fbbe80616fa56a6ce27c92b075ed970523842f12455e488452a82bd15a3693d5643554ec9609459d2ea0ab97145630795b0f333e66d8ae8cb564d57c6272e370fa96de6ef24b01c22063b3f2b60358b14353d363c5e5b77db5f57b20823afedd23a7bbcfaa76e56f730f91c6882d29f3d3a5301b87af39d16712dbf8dcac0aa03d74a485ab22978a6b39ab75bb825a2b3965ff927ff8f82bc9f465c9592f74bd0c14f92e";
+        String srt = "101076fe7a9b5755bae8a7066fed78757f1ab4462ff56cb99f64c3fe108c1b6cdc3a8169a4839dfe30fa589181f22ddd43182bfdff377e08845c99fe5cf7b85f6f49f713fe556bc1d94444b617516a6ce1d1321b1a2cd13dfd1e285ffd0484c36670f04f76b66f119a67e6a34bc0683dbb191b750853e4048d1fb2bc7da579f68880850d78b1e92c409bed7bf449d8c499876cdbfe706f0bc977350661d5cc30a019771bffc058a67a7b17aa235490f44b95e09a34ac3aed397d41264b293b7e64455162dd415945e53b248e79688c635d9233c768200f916c35058bfef8d8d8eb98027550d8b9548c1c6bfe3edae045e5";
         System.out.println(decrypt(srt));
+        Document document = XmlUtil.parseXml(srt);
+        NodeList nodeList = document.getDocumentElement().getChildNodes();
+        int len = nodeList.getLength();
+        for (int i = 0; i < len; i++) {
+            Node node= nodeList.item(i);
+            System.out.println("Code: " + node.getNodeName());
+            System.out.println("Source: " + node.getNodeValue());
+        }
+
 
     }
 }

+ 10 - 24
sp-service/payment-server/src/main/java/com/pj/xml/MessageXML.java

@@ -8,6 +8,8 @@ import com.pj.api.dto.PaymentTwoDto;
 import com.pj.bank_info.BankInfo;
 import com.pj.utils.CryptoUtil;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Date;
@@ -560,6 +562,9 @@ public class MessageXML {
                     " tel=\"" + paymentTwoDto.getPcContact() + "\"" +               //联系电话
                     "/>\n";
         }
+        Double netWeight=paymentTwoDto.getNetWt();
+        double singlePrice= BigDecimal.valueOf(paymentTwoDto.getAmount())
+                .divide(BigDecimal.valueOf(netWeight),3, RoundingMode.HALF_UP).doubleValue();
         String payload=
                 "<payload xsi:type=\"orderDTO\"" +
                 " sn=\"" + paymentTwoDto.getOrderNo() + "\"" +                  //订单号
@@ -586,12 +591,12 @@ public class MessageXML {
                 "<items" +//商品明细
                 " code=\"" + paymentTwoDto.getCodeTs() + "\"" +             //商品编码
                 " name=\"" + paymentTwoDto.getGoodsName() + "\"" +          //商品名称
-                //" unit=\"" + paymentTwoDto.getGoodsUnit() + "\"" +          //商品单位
-                " unit=\"0001\"" +                                          //商品单位——KG
-                " price=\"" + paymentTwoDto.getDeclPrice() + "\"" +         //商品单价
+                " unit=\"" + paymentTwoDto.getGoodsUnit() + "\"" +          //商品单位
+//                " unit=\"0001\"" +                                          //商品单位——KG
+                " price=\"" +singlePrice + "\"" +                           //商品单价
                 " quantity=\"" + paymentTwoDto.getBuyQty() + "\"" +         //商品数量
-                " weight=\"" + paymentTwoDto.getNetWt() + "\"" +            //商品重量
-                " amount=\"0\"" +                                           //金额
+                " weight=\"" + netWeight + "\"" +                           //商品重量
+                " amount=\""+paymentTwoDto.getAmount()+"\"" +                                           //金额
                 "/>\n" +
 
                 "</payload>";
@@ -709,25 +714,6 @@ public class MessageXML {
                         ">" +
 
 
-                        /*"<vendee" +//买方基本信息(采购企业)
-                        " name=\"" + paymentTwoDto.getPcName() + "\"" +                       //企业名称
-                        " papersType=\"0008\"" +                                      //证件类型  0008 社会统一信用代码(默认)
-                        " papersNo=\"" + paymentTwoDto.getBusinessLicense() + "\"" +        //证件号
-                        " nationality=\"0001\"" +                                  //国籍
-                        " accountNo=\"" + paymentTwoDto.getPcBankAccount() + "\"" +     //银行账号
-                        " bankCode=\"MRCCCNB1\"" +                                   //开户行代码
-                        " tel=\"" + paymentTwoDto.getPcContact() + "\"" +                     //联系电话
-                        "/>\n" +
-
-                        "<vendor" +//卖方基础信息(边民)
-                        " name=\"" + paymentTwoDto.getBorderName() + "\"" +                 //边民姓名
-                        " papersType=\"0001\"" +                                    //证件类型  0001 身份证
-                        " papersNo=\"" + paymentTwoDto.getBorderidno() + "\"" +           //边民证件号
-                        " nationality=\"0001\"" +                                //国籍
-                        " accountNo=\"" + paymentTwoDto.getBankCode() + "\"" +        //银行账号
-                        " bankCode=\"MRCCCNB1\"" +                                 //开户行代码
-                        " tel=\"" + paymentTwoDto.getBorderTel() + "\"" +                   //联系电话
-                        "/>\n" +*/
 
                         "<vendee" +//买方基本信息(采购企业)
                         " name=\"云南跨境贸易公司\"" +                       //企业名称