소스 검색

取消支付

傅行帆 5 년 전
부모
커밋
d581947fac

+ 23
- 0
src/main/java/com/huiju/estateagents/controller/WxPayController.java 파일 보기

@@ -184,4 +184,27 @@ public class WxPayController extends BaseController {
184 184
         responseBean.addSuccess(taOrder);
185 185
         return responseBean;
186 186
     }
187
+
188
+    /**
189
+     * 取消微信支付
190
+     * @param taOrder
191
+     * @param request
192
+     * @return
193
+     */
194
+    @RequestMapping(value = "/wx/cancel",method = RequestMethod.POST)
195
+    public ResponseBean wxCancel(@RequestBody TaOrder taOrder,
196
+                                 HttpServletRequest request){
197
+        ResponseBean responseBean = new ResponseBean();
198
+        try {
199
+            taOrder.setOrgId(getOrgId(request));
200
+            taOrder.setPersonId(getPersonId(request));
201
+            wxPayService.payCancel(taOrder);
202
+        } catch (Exception e) {
203
+            log.error("微信取消付款异常: {}" , e.getMessage());
204
+            responseBean.addError(e.getMessage());
205
+            return responseBean;
206
+        }
207
+        responseBean.addSuccess(taOrder);
208
+        return responseBean;
209
+    }
187 210
 }

+ 2
- 0
src/main/java/com/huiju/estateagents/service/IWxPayService.java 파일 보기

@@ -26,4 +26,6 @@ public interface IWxPayService {
26 26
     void payRefund(TaOrder taOrder, Integer orgId, Integer userId) throws Exception;
27 27
 
28 28
     void houseRefund(Map<String, String> orderInfo);
29
+
30
+    void payCancel(TaOrder taOrder);
29 31
 }

+ 41
- 0
src/main/java/com/huiju/estateagents/service/impl/WxPayServiceImpl.java 파일 보기

@@ -192,6 +192,47 @@ public class WxPayServiceImpl implements IWxPayService {
192 192
         });
193 193
     }
194 194
 
195
+    @Override
196
+    public void payCancel(TaOrder taOrder) {
197
+        if (taOrder.getTargetType().equals(CommConstant.ORDER_TARGET_TYPE_HOUSE)){
198
+           cancelHouseOrder(taOrder);
199
+        }
200
+    }
201
+
202
+    private void cancelHouseOrder(TaOrder taOrder) {
203
+        TaRaiseRecord taRaiseRecord = taRaiseRecordMapper.selectById(taOrder.getTargetId());
204
+        //获取认筹信息
205
+        TaRaise taRaise = taRaiseMapper.selectById(taRaiseRecord.getRaiseId());
206
+        //判断是自动锁房状态还是手动锁房状态,手动锁房跳过,自动锁房需要解锁
207
+        if (taRaise.getHouseLockingType().equals(CommConstant.HOUSE_LOCKING_TYPE_AUTO)){
208
+            //如果是自动锁房,客户只能锁定一个房源
209
+            QueryWrapper<TaRaiseHouse> taRaiseHouseQueryWrapper = new QueryWrapper<>();
210
+            taRaiseHouseQueryWrapper.eq("org_id",taOrder.getOrgId());
211
+            taRaiseHouseQueryWrapper.eq("raise_record_id",taRaiseRecord.getRaiseRecordId());
212
+            taRaiseHouseQueryWrapper.eq("person_id",taOrder.getPersonId());
213
+            TaRaiseHouse taRaiseHouse = taRaiseHouseMapper.selectOne(taRaiseHouseQueryWrapper);
214
+
215
+            //获取房源
216
+            TaHousingResources taHousingResources = getHousingResourcesById(taRaiseHouse.getHouseId());
217
+
218
+            //校验并自动解锁
219
+            autoUnLockingHouse(taRaiseRecord,taRaiseHouse,taHousingResources);
220
+        }
221
+    }
222
+
223
+    private synchronized void autoUnLockingHouse(TaRaiseRecord taRaiseRecord, TaRaiseHouse taRaiseHouse, TaHousingResources taHousingResources) {
224
+        log.info("正在为客户personId为{}选中的房源id为{}自动解锁",taRaiseHouse.getPersonId(),taRaiseHouse.getHouseId());
225
+        //更改此房源为解锁状态
226
+        taHousingResources.setHouseLockingStatus(CommConstant.HOUSE_LOCKING_STATUS_UNLOCKED);
227
+        taHousingResourcesMapper.updateById(taHousingResources);
228
+        //更改此认筹旦和房源关系为解锁状态
229
+        taRaiseHouse.setHouseLockingStatus(CommConstant.HOUSE_LOCKING_STATUS_UNLOCKED);
230
+        taRaiseHouseMapper.updateById(taRaiseHouse);
231
+        //更改认筹单为解锁状态
232
+        taRaiseRecord.setHouseLockingStatus(CommConstant.HOUSE_LOCKING_STATUS_UNLOCKED);
233
+        taRaiseRecordMapper.updateById(taRaiseRecord);
234
+    }
235
+
195 236
     /**
196 237
      * 插入退款订单并更新认筹单的退款原因
197 238
      * @param taOrder