Browse Source

余额扣款

jk-GitHub-coder 3 years ago
parent
commit
935305d414

+ 32 - 17
YijiaRestful/src/main/java/com/platform/yijia/controller/PayController.java

@@ -966,23 +966,38 @@ public class PayController {
                             stationInfo.setStationId(Integer.valueOf(infoMap.get("stationId").toString()));
                             StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
                             if(stationInfos.getIsLngFlagGroup() !=null && stationInfos.getIsLngFlagGroup().equals("1")){
-                                //等于1表示次要业务:LNG集团平台加气(可能会出现); 插入油站余额记录
-                                StationBalanceChange stationBalanceChange = new StationBalanceChange();
-                                stationBalanceChange.setStationId(stationInfos.getStationId());
-                                stationBalanceChange.setAmt(Double.valueOf(infoMap.get("sellAmt").toString()));
-                                stationBalanceChange.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(infoMap.get("payDate").toString()));
-                                stationBalanceChange.setType("-");
-                                stationBalanceChange.setOrderNo(ordNo);
-                                stationBalanceChange.setNowAmt(stationInfos.getBalance());
-                                //生成记录
-                                payOrderService.insertStationBalanceExchange(stationBalanceChange);
-                                StationInfo s = new StationInfo();
-                                BigDecimal subtract = new BigDecimal(String.valueOf(stationInfos.getBalance())).subtract(new BigDecimal(infoMap.get("sellAmt").toString()));
-                                s.setBalance(subtract.doubleValue());
-                                s.setStationId(stationInfos.getStationId());
-                                //更新油站余额
-                                stationService.updateStationBalance(s);
-                                logger.info("LNG加气平台支付更新余额完成!");
+                                //余额减少加锁
+                                synchronized (this){
+                                    //Thread.currentThread().getName();
+                                    logger.info("当前线程Id:" + Thread.currentThread().getId());
+                                    logger.info("当前线程名称:" + Thread.currentThread().getName());
+                                    logger.info("随行付返回的订单号:" + ordNo);
+                                    logger.info("当前要扣减余额的订单号:" + infoMap.get("orderNo").toString());
+                                    //等于1表示次要业务:LNG集团平台加气(可能会出现); 插入油站余额记录
+                                    StationInfo sta= new StationInfo();
+                                    sta.setStationId(Integer.valueOf(infoMap.get("stationId").toString()));
+                                    StationInfo staInfoResult = stationService.selectStationBalance(stationInfo);
+
+                                    //扣余额
+                                    StationBalanceChange stationBalanceChange = new StationBalanceChange();
+                                    stationBalanceChange.setStationId(staInfoResult.getStationId());
+                                    stationBalanceChange.setAmt(Double.valueOf(infoMap.get("sellAmt").toString()));
+                                    stationBalanceChange.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(infoMap.get("payDate").toString()));
+                                    stationBalanceChange.setType("-");
+                                    stationBalanceChange.setOrderNo(ordNo);
+                                    stationBalanceChange.setNowAmt(staInfoResult.getBalance());
+                                    //生成记录
+                                    payOrderService.insertStationBalanceExchange(stationBalanceChange);
+                                    StationInfo s = new StationInfo();
+                                    logger.info("当前油站余额:" + staInfoResult.getBalance().toString());
+                                    BigDecimal subtract = new BigDecimal(String.valueOf(staInfoResult.getBalance())).subtract(new BigDecimal(infoMap.get("sellAmt").toString()));
+                                    s.setBalance(subtract.doubleValue());
+                                    s.setStationId(staInfoResult.getStationId());
+                                    //更新油站余额
+                                    logger.info("本次订单: "+ infoMap.get("orderNo").toString() +"后油站余额:" + subtract.toString());
+                                    stationService.updateStationBalance(s);
+                                    logger.info("LNG加气平台支付更新余额完成!");
+                                }
                             }else {
                                 if(stationInfos.getCouponEnabledFlag() !=null && stationInfos.getCouponEnabledFlag().equals("1")){
                                     //discountCoupon

+ 3 - 0
YijiaRestful/src/main/java/com/platform/yijia/dao/StationInfoMapper.java

@@ -12,6 +12,9 @@ public interface StationInfoMapper {
     //更新LNG平台加气油站余额
     void updateStationBalance(StationInfo stationInfo);
 
+    //更新LNG平台加气油站余额
+    StationInfo selectStationBalance(StationInfo stationInfo);
+
     //根据小程序ID查询油站列表
     List<StationInfo> getStationListByAppId(StationInfo stationInfo);
 

+ 3 - 0
YijiaRestful/src/main/java/com/platform/yijia/service/StationService.java

@@ -13,6 +13,9 @@ public interface StationService {
     //更新LNG平台加气油站余额
     void updateStationBalance(StationInfo stationInfo);
 
+    //更新LNG平台加气油站余额
+    StationInfo selectStationBalance(StationInfo stationInfo);
+
     //根据小程序获取油站列表
     List<StationInfo> getStationListByAppId(StationInfo stationInfo);
 

+ 6 - 0
YijiaRestful/src/main/java/com/platform/yijia/service/impl/StationServiceImpl.java

@@ -78,6 +78,12 @@ public class StationServiceImpl implements StationService {
         stationInfoMapper.updateStationBalance(stationInfo);
     }
 
+    //更新LNG平台加气油站余额
+    @Override
+    public StationInfo selectStationBalance(StationInfo stationInfo) {
+        return stationInfoMapper.selectStationBalance(stationInfo);
+    }
+
     //获取油站的某个油品的价格和营销方案信息
     @Override
     public Map<String, Object> selectStationOilPriceAndDiscountSetting(Map<String, Object> map) {

+ 17 - 0
YijiaRestful/src/main/resources/mapper/StationInfoMapper.xml

@@ -65,6 +65,23 @@
 <!--    <result column="parent_id"              jdbcType="VARCHAR" property="parentId" />-->
 <!--  </resultMap>-->
 
+
+  <!--查询油站余额-->
+  <select id="selectStationBalance" resultMap="BaseResultMap" parameterType="com.platform.yijia.pojo.StationInfo">
+    SELECT
+        dept_id,
+        dept_name,
+        balance
+    FROM
+        sys_dept
+    <where>
+      <if test="stationId !=null and stationId !=''">
+        AND dept_id = #{stationId}
+      </if>
+    </where>
+    FOR UPDATE
+  </select>
+
   <!--查询油站轮播图片信息-->
   <select id="getStationPicList" resultMap="BaseResultMap" parameterType="com.platform.yijia.pojo.StationInfo">
     SELECT