Browse Source

新需求

魏超 5 years ago
parent
commit
c1ae556e12

+ 6
- 0
src/main/java/com/huiju/estateagents/common/CommConstant.java View File

853
      */
853
      */
854
     public static final String ITEM_TYPE_REFUND = "refund";
854
     public static final String ITEM_TYPE_REFUND = "refund";
855
 
855
 
856
+    /**
857
+     * 明细类型--退费
858
+     */
859
+    public static final String ITEM_TYPE_REJECT = "reject";
860
+
861
+
856
     /**
862
     /**
857
      * 明细类型--红包
863
      * 明细类型--红包
858
      */
864
      */

+ 49
- 0
src/main/java/com/huiju/estateagents/redpack/controller/TaOrgAccountController.java View File

20
 import com.huiju.estateagents.base.ResponseBean;
20
 import com.huiju.estateagents.base.ResponseBean;
21
 import com.huiju.estateagents.common.StringUtils;
21
 import com.huiju.estateagents.common.StringUtils;
22
 import com.huiju.estateagents.redpack.entity.TaOrgAccount;
22
 import com.huiju.estateagents.redpack.entity.TaOrgAccount;
23
+import com.huiju.estateagents.redpack.entity.TaOrgOrder;
24
+import com.huiju.estateagents.redpack.entity.TaOrgRefundApplication;
23
 import com.huiju.estateagents.redpack.service.ITaOrgAccountService;
25
 import com.huiju.estateagents.redpack.service.ITaOrgAccountService;
26
+import com.huiju.estateagents.redpack.service.ITaOrgOrderService;
24
 
27
 
25
 /**
28
 /**
26
  * <p>
29
  * <p>
39
     @Autowired
42
     @Autowired
40
     public ITaOrgAccountService iTaOrgAccountService;
43
     public ITaOrgAccountService iTaOrgAccountService;
41
 
44
 
45
+    @Autowired
46
+    public ITaOrgOrderService iTaOrgOrderService;
42
 
47
 
43
     /**
48
     /**
44
      * 分页查询列表
49
      * 分页查询列表
195
         }
200
         }
196
         return responseBean;
201
         return responseBean;
197
     }
202
     }
203
+
204
+    /**
205
+     * 订单退款
206
+     * @param id
207
+     * @param refundApplication
208
+     * @param request
209
+     * @return
210
+     */
211
+    @RequestMapping(value = "/taOrgOrder/refund/{id}")
212
+    public ResponseBean taOrgOrderRefund(@PathVariable String id, @RequestBody TaOrgRefundApplication refundApplication,
213
+                                           HttpServletRequest request){
214
+        ResponseBean responseBean = new ResponseBean();
215
+        try {
216
+            Integer userId = getUserId(request);
217
+            responseBean = iTaOrgOrderService.refundOrder(id, refundApplication,  2149);
218
+        }catch (Exception e){
219
+            e.printStackTrace();
220
+            logger.error("taOrgAccountRefund -=- {}",e.toString());
221
+            responseBean.addError(e.getMessage());
222
+        }
223
+        return responseBean;
224
+    }
225
+
226
+    /**
227
+     * 订单驳回
228
+     * @param id
229
+     * @param refundApplication
230
+     * @param request
231
+     * @return
232
+     */
233
+    @RequestMapping(value = "/taOrgOrder/reject/{id}")
234
+    public ResponseBean taOrgOrderReject(@PathVariable String id, @RequestBody TaOrgRefundApplication refundApplication,
235
+                                         HttpServletRequest request){
236
+        ResponseBean responseBean = new ResponseBean();
237
+        try {
238
+            Integer userId = getUserId(request);
239
+            responseBean = iTaOrgOrderService.rejectOrder(id, refundApplication,  2149);
240
+        }catch (Exception e){
241
+            e.printStackTrace();
242
+            logger.error("taOrgAccountRefund -=- {}",e.toString());
243
+            responseBean.addError(e.getMessage());
244
+        }
245
+        return responseBean;
246
+    }
198
 }
247
 }

+ 4
- 1
src/main/java/com/huiju/estateagents/redpack/entity/TaOrgRefundApplication.java View File

2
 
2
 
3
 import java.time.LocalDateTime;
3
 import java.time.LocalDateTime;
4
 import java.io.Serializable;
4
 import java.io.Serializable;
5
+import java.util.List;
5
 
6
 
6
 import com.baomidou.mybatisplus.annotation.IdType;
7
 import com.baomidou.mybatisplus.annotation.IdType;
8
+import com.baomidou.mybatisplus.annotation.TableField;
7
 import com.baomidou.mybatisplus.annotation.TableId;
9
 import com.baomidou.mybatisplus.annotation.TableId;
8
 
10
 
9
 import lombok.Data;
11
 import lombok.Data;
91
      */
93
      */
92
     private Integer status;
94
     private Integer status;
93
 
95
 
94
-
96
+    @TableField(exist = false)
97
+    private List<String> certificateList;
95
 }
98
 }

+ 19
- 0
src/main/java/com/huiju/estateagents/redpack/service/ITaOrgOrderService.java View File

1
 package com.huiju.estateagents.redpack.service;
1
 package com.huiju.estateagents.redpack.service;
2
 
2
 
3
 import com.baomidou.mybatisplus.extension.service.IService;
3
 import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.estateagents.base.ResponseBean;
4
 import com.huiju.estateagents.redpack.entity.TaOrgOrder;
5
 import com.huiju.estateagents.redpack.entity.TaOrgOrder;
6
+import com.huiju.estateagents.redpack.entity.TaOrgRefundApplication;
5
 
7
 
6
 /**
8
 /**
7
  * <p>
9
  * <p>
12
  * @since 2020-06-03
14
  * @since 2020-06-03
13
  */
15
  */
14
 public interface ITaOrgOrderService extends IService<TaOrgOrder> {
16
 public interface ITaOrgOrderService extends IService<TaOrgOrder> {
17
+    /**
18
+     * 订单退款
19
+     * @param id
20
+     * @param refundApplication
21
+     * @param userId
22
+     * @return
23
+     */
24
+    ResponseBean refundOrder(String id, TaOrgRefundApplication refundApplication, Integer userId);
15
 
25
 
26
+
27
+    /**
28
+     * 订单驳回
29
+     * @param id
30
+     * @param refundApplication
31
+     * @param userId
32
+     * @return
33
+     */
34
+    ResponseBean rejectOrder(String id, TaOrgRefundApplication refundApplication, Integer userId);
16
 }
35
 }

+ 6
- 36
src/main/java/com/huiju/estateagents/redpack/service/impl/TaOrgAccountServiceImpl.java View File

78
 
78
 
79
         //更新系统账户充值金额
79
         //更新系统账户充值金额
80
         TaOrgAccount rechargeAccount = assembleRechargeAccount(accountId, taOrgAccount);
80
         TaOrgAccount rechargeAccount = assembleRechargeAccount(accountId, taOrgAccount);
81
-        int rechargeAccountInsertResult = taOrgAccountMapper.updateById(rechargeAccount);
81
+        synchronized (this){
82
+            taOrgAccountMapper.updateById(rechargeAccount);
83
+        }
82
 
84
 
83
         //新增订单记录
85
         //新增订单记录
84
         TaOrgOrder taOrgOrder = assembleTaOrgOrder(orgId, taOrgAccount.getRechargeAmount(), userId, CommConstant.ITEM_TYPE_RECHARGE);
86
         TaOrgOrder taOrgOrder = assembleTaOrgOrder(orgId, taOrgAccount.getRechargeAmount(), userId, CommConstant.ITEM_TYPE_RECHARGE);
100
             });
102
             });
101
         }
103
         }
102
 
104
 
103
-        if (rechargeAccountInsertResult < 1 ||
104
-                taOrgOrderInsertResult < 1 ||
105
+        if (    taOrgOrderInsertResult < 1 ||
105
                 taOrgOrderDetailInsertResult < 1 ||
106
                 taOrgOrderDetailInsertResult < 1 ||
106
                 taOrgAccountDetailedListInsertResult < 1){
107
                 taOrgAccountDetailedListInsertResult < 1){
107
             responseBean.addError("充值失败");
108
             responseBean.addError("充值失败");
145
             });
146
             });
146
         }
147
         }
147
 
148
 
148
-        //更新退款申请状态
149
-        TaOrgRefundApplication taOrgRefundApplication = assembleAcctApplication(userId);
150
-        QueryWrapper<TaOrgRefundApplication> taOrgRefundApplicationQueryWrapper = new QueryWrapper<>();
151
-        taOrgRefundApplicationQueryWrapper.eq("org_id", taOrgAccount.getOrgId());
152
-        int taOrgRefundApplicationUpdateResult = taOrgRefundApplicationMapper.update(taOrgRefundApplication, taOrgRefundApplicationQueryWrapper);
153
-
154
-        //更新账户冻结记录
155
-        TaOrgAccountBlocked taOrgAccountBlocked = new TaOrgAccountBlocked();
156
-        taOrgAccountBlocked.setStatus(CommConstant.STATUS_UNACCALIMED);
157
-        QueryWrapper<TaOrgAccountBlocked> taOrgAccountBlockedQueryWrapper = new QueryWrapper<>();
158
-        taOrgAccountBlockedQueryWrapper.eq("account_id", taOrgAccount.getAccountId());
159
-        taOrgAccountBlockedQueryWrapper.eq("org_id", taOrgAccount.getOrgId());
160
-        int taOrgAccountBlockedUpdateResult = taOrgAccountBlockedMapper.update(taOrgAccountBlocked, taOrgAccountBlockedQueryWrapper);
161
-
162
         if (taOrgOrderInsertResult < 1 ||
149
         if (taOrgOrderInsertResult < 1 ||
163
                 taOrgOrderInsertResult < 1 ||
150
                 taOrgOrderInsertResult < 1 ||
164
                 taOrgOrderDetailInsertResult < 1 ||
151
                 taOrgOrderDetailInsertResult < 1 ||
165
-                taOrgAccountDetailedListInsertResult < 1 ||
166
-                taOrgRefundApplicationUpdateResult < 1 ||
167
-                taOrgAccountBlockedUpdateResult < 1){
152
+                taOrgAccountDetailedListInsertResult < 1){
168
             responseBean.addError("退费失败");
153
             responseBean.addError("退费失败");
169
             return responseBean;
154
             return responseBean;
170
         }
155
         }
220
 
205
 
221
         return taOrgAccountCertificateList;
206
         return taOrgAccountCertificateList;
222
     }
207
     }
208
+
223
     /**
209
     /**
224
      * 构造订单
210
      * 构造订单
225
      * @param orgId
211
      * @param orgId
307
         return refundAccount;
293
         return refundAccount;
308
     }
294
     }
309
 
295
 
310
-    /**
311
-     * 退费审核通过
312
-     * @param userId
313
-     * @return
314
-     */
315
-    private TaOrgRefundApplication assembleAcctApplication(Integer userId){
316
-        TaUser taUser = selectUserById(userId);
317
-
318
-        TaOrgRefundApplication taOrgRefundApplication = new TaOrgRefundApplication();
319
-        taOrgRefundApplication.setAuditStatus("同意");
320
-        taOrgRefundApplication.setAuditorId(userId);
321
-        taOrgRefundApplication.setAuditorName(taUser.getUserName());
322
-
323
-        return taOrgRefundApplication;
324
-    }
325
-
326
     public TaOrgAccount selectTaOrgAccountById(String accountId){
296
     public TaOrgAccount selectTaOrgAccountById(String accountId){
327
         QueryWrapper<TaOrgAccount> selectOneQuery = new QueryWrapper<>();
297
         QueryWrapper<TaOrgAccount> selectOneQuery = new QueryWrapper<>();
328
         selectOneQuery.eq("account_id", accountId);
298
         selectOneQuery.eq("account_id", accountId);

+ 298
- 0
src/main/java/com/huiju/estateagents/redpack/service/impl/TaOrgOrderServiceImpl.java View File

1
 package com.huiju.estateagents.redpack.service.impl;
1
 package com.huiju.estateagents.redpack.service.impl;
2
 
2
 
3
+import java.time.LocalDateTime;
4
+import java.util.ArrayList;
5
+import java.util.List;
6
+
7
+import org.apache.commons.collections.CollectionUtils;
8
+import org.springframework.beans.factory.annotation.Autowired;
3
 import org.springframework.stereotype.Service;
9
 import org.springframework.stereotype.Service;
10
+import org.springframework.transaction.annotation.Transactional;
4
 
11
 
12
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
13
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
14
+import com.huiju.estateagents.base.ResponseBean;
15
+import com.huiju.estateagents.center.taUser.entity.TaUser;
16
+import com.huiju.estateagents.center.taUser.mapper.TaUserMapper;
17
+import com.huiju.estateagents.common.CommConstant;
18
+import com.huiju.estateagents.common.CommonUtils;
19
+import com.huiju.estateagents.redpack.entity.TaOrgAccount;
20
+import com.huiju.estateagents.redpack.entity.TaOrgAccountBlocked;
21
+import com.huiju.estateagents.redpack.entity.TaOrgAccountCertificate;
22
+import com.huiju.estateagents.redpack.entity.TaOrgAccountDetailedList;
6
 import com.huiju.estateagents.redpack.entity.TaOrgOrder;
23
 import com.huiju.estateagents.redpack.entity.TaOrgOrder;
24
+import com.huiju.estateagents.redpack.entity.TaOrgOrderDetail;
25
+import com.huiju.estateagents.redpack.entity.TaOrgRefundApplication;
26
+import com.huiju.estateagents.redpack.mapper.TaOrgAccountBlockedMapper;
27
+import com.huiju.estateagents.redpack.mapper.TaOrgAccountCertificateMapper;
28
+import com.huiju.estateagents.redpack.mapper.TaOrgAccountDetailedListMapper;
29
+import com.huiju.estateagents.redpack.mapper.TaOrgAccountMapper;
30
+import com.huiju.estateagents.redpack.mapper.TaOrgOrderDetailMapper;
7
 import com.huiju.estateagents.redpack.mapper.TaOrgOrderMapper;
31
 import com.huiju.estateagents.redpack.mapper.TaOrgOrderMapper;
32
+import com.huiju.estateagents.redpack.mapper.TaOrgRefundApplicationMapper;
8
 import com.huiju.estateagents.redpack.service.ITaOrgOrderService;
33
 import com.huiju.estateagents.redpack.service.ITaOrgOrderService;
9
 
34
 
10
 /**
35
 /**
18
 @Service
43
 @Service
19
 public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOrder> implements ITaOrgOrderService {
44
 public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOrder> implements ITaOrgOrderService {
20
 
45
 
46
+    @Autowired
47
+    private TaOrgAccountMapper taOrgAccountMapper;
48
+
49
+    @Autowired
50
+    private TaOrgOrderMapper taOrgOrderMapper;
51
+
52
+    @Autowired
53
+    private TaOrgOrderDetailMapper taOrgOrderDetailMapper;
54
+
55
+    @Autowired
56
+    private TaOrgAccountDetailedListMapper taOrgAccountDetailedListMapper;
57
+
58
+    @Autowired
59
+    private TaOrgRefundApplicationMapper taOrgRefundApplicationMapper;
60
+
61
+    @Autowired
62
+    private TaOrgAccountBlockedMapper taOrgAccountBlockedMapper;
63
+
64
+    @Autowired
65
+    private TaOrgAccountCertificateMapper taOrgAccountCertificateMapper;
66
+
67
+    @Autowired
68
+    private TaUserMapper taUserMapper;
69
+
70
+
71
+    @Override
72
+    @Transactional(rollbackFor = {RuntimeException.class})
73
+    public ResponseBean refundOrder(String id, TaOrgRefundApplication refundApplication, Integer userId) {
74
+        ResponseBean responseBean = new ResponseBean();
75
+
76
+        //订单退款申请,更新账户的实际余额
77
+        TaOrgAccount taOrgAccount = assembleRefundAccount(refundApplication.getOrgId(), refundApplication, CommConstant.ITEM_TYPE_REFUND);
78
+        taOrgAccountMapper.updateById(taOrgAccount);
79
+
80
+        //新增订单记录
81
+        TaOrgOrder taOrgOrder = assembleTaOrgOrder(refundApplication.getOrgId(), taOrgAccount.getRechargeAmount(), userId);
82
+        int taOrgOrderInsertResult = taOrgOrderMapper.insert(taOrgOrder);
83
+
84
+        //新增关联订单明细
85
+        TaOrgOrderDetail taOrgOrderDetail = assembleTaOrgOrderDetail(taOrgOrder.getOrderId(), refundApplication.getOrgId(), taOrgAccount.getRechargeAmount());
86
+        int taOrgOrderDetailInsertResult = taOrgOrderDetailMapper.insert(taOrgOrderDetail);
87
+
88
+        //新建账户消费流水
89
+        TaOrgAccountDetailedList taOrgAccountDetailedList = assembleAccountDetailList(refundApplication, userId);
90
+        int taOrgAccountDetailedListInsertResult = taOrgAccountDetailedListMapper.insert(taOrgAccountDetailedList);
91
+
92
+        //更新账户退款申请
93
+        TaOrgRefundApplication updateRefundApplication = assembleRefundApplication(userId, CommConstant.ITEM_TYPE_REJECT, refundApplication);
94
+        QueryWrapper<TaOrgRefundApplication> taOrgRefundApplicationQueryWrapper = new QueryWrapper<>();
95
+        taOrgRefundApplicationQueryWrapper.eq("org_id", refundApplication.getOrgId());
96
+        int taOrgRefundApplicationUpdateResult = taOrgRefundApplicationMapper.update(updateRefundApplication, taOrgRefundApplicationQueryWrapper);
97
+
98
+        //更新账户冻结记录
99
+        int taOrgAccountBlockedUpdateResult = updateOrgAccountBlock(refundApplication);
100
+
101
+        //插入凭证记录
102
+        if (CollectionUtils.isNotEmpty(refundApplication.getCertificateList())){
103
+            List<TaOrgAccountCertificate> taOrgAccountCertificateList = assembleAccountCertificate(refundApplication.getOrgId(), taOrgAccount, taOrgAccountDetailedList.getSerialNo(), taOrgOrder.getOrderId(), userId, CommConstant.ITEM_TYPE_REFUND);
104
+            taOrgAccountCertificateList.forEach(e -> {
105
+                taOrgAccountCertificateMapper.insert(e);
106
+            });
107
+        }
108
+
109
+        if (taOrgOrderInsertResult < 1 ||
110
+                taOrgOrderDetailInsertResult < 1 ||
111
+                taOrgAccountDetailedListInsertResult < 1 ||
112
+                taOrgRefundApplicationUpdateResult < 1 ||
113
+                taOrgAccountBlockedUpdateResult < 1){
114
+            responseBean.addError("订单退款失败");
115
+            return responseBean;
116
+        }
117
+
118
+        return responseBean;
119
+    }
120
+
121
+    @Override
122
+    @Transactional(rollbackFor = {RuntimeException.class})
123
+    public ResponseBean rejectOrder(String id, TaOrgRefundApplication refundApplication, Integer userId) {
124
+        ResponseBean responseBean = new ResponseBean();
125
+
126
+        //退款订单驳回,更新账户的可用余额
127
+        TaOrgAccount taOrgAccount = assembleRefundAccount(refundApplication.getOrgId(), refundApplication, CommConstant.ITEM_TYPE_REJECT);
128
+        taOrgAccountMapper.updateById(taOrgAccount);
129
+
130
+        //更新账户冻结记录
131
+        int taOrgAccountBlockedUpdateResult = updateOrgAccountBlock(refundApplication);
132
+
133
+        //更新退款申请记录
134
+        TaOrgRefundApplication updateRefundApplication = assembleRefundApplication(userId, CommConstant.ITEM_TYPE_REJECT, refundApplication);
135
+        QueryWrapper<TaOrgRefundApplication> taOrgRefundApplicationQueryWrapper = new QueryWrapper<>();
136
+        taOrgRefundApplicationQueryWrapper.eq("org_id", refundApplication.getOrgId());
137
+        int taOrgRefundApplicationUpdateResult = taOrgRefundApplicationMapper.update(updateRefundApplication, taOrgRefundApplicationQueryWrapper);
138
+
139
+        if (taOrgAccountBlockedUpdateResult < 1 ||
140
+                taOrgRefundApplicationUpdateResult < 1){
141
+            responseBean.addError("驳回失败");
142
+            return responseBean;
143
+        }
144
+
145
+        return responseBean;
146
+
147
+    }
148
+
149
+    /**
150
+     * 构造充值账户
151
+     * @param orgId
152
+     * @param refundApplication
153
+     * @return
154
+     */
155
+    private TaOrgAccount assembleRefundAccount(Integer orgId, TaOrgRefundApplication refundApplication, String operateType){
156
+        TaOrgAccount selectOneAccount = selectTaOrgAccountById(orgId);
157
+
158
+        TaOrgAccount rechargeAccount = new TaOrgAccount();
159
+        rechargeAccount.setAccountId(selectOneAccount.getAccountId());
160
+
161
+        if (CommConstant.ITEM_TYPE_REFUND.equals(operateType)){
162
+            rechargeAccount.setRealBalance(selectOneAccount.getRealBalance() - refundApplication.getAmount());
163
+            rechargeAccount.setTotalRefund(selectOneAccount.getTotalRefund() + refundApplication.getAmount());
164
+        }
165
+
166
+        if (CommConstant.ITEM_TYPE_REJECT.equals(operateType)){
167
+            rechargeAccount.setAvailableBalance(refundApplication.getAmount());
168
+        }
169
+
170
+        rechargeAccount.setModifyDate(LocalDateTime.now());
171
+
172
+        return rechargeAccount;
173
+    }
174
+
175
+    /**
176
+     * 构造订单
177
+     * @param orgId
178
+     * @param amount
179
+     * @param userId
180
+     * @return
181
+     */
182
+    private TaOrgOrder assembleTaOrgOrder(Integer orgId, Integer amount, Integer userId){
183
+
184
+        TaUser taUser = selectUserById(userId);
185
+        TaOrgOrder taOrgOrder = new TaOrgOrder();
186
+        taOrgOrder.setOrgId(orgId);
187
+        taOrgOrder.setTradeNo(CommonUtils.generateTradeNo(CommConstant.RECHARGE));
188
+        taOrgOrder.setAmount(amount);
189
+        taOrgOrder.setCreateDate(LocalDateTime.now());
190
+        taOrgOrder.setExpiryDate(LocalDateTime.now());
191
+        taOrgOrder.setRemark("线下订单退费");
192
+        taOrgOrder.setTradingStatus(String.valueOf(CommConstant.STATUS_NORMAL));
193
+        taOrgOrder.setIsOffline(true);
194
+        taOrgOrder.setUserId(userId);
195
+        taOrgOrder.setUserName(taUser.getUserName());
196
+
197
+        return taOrgOrder;
198
+    }
199
+
200
+    /**
201
+     * 构造交订单详情信息
202
+     * @param orderId
203
+     * @param orgId
204
+     * @param amount
205
+     * @return
206
+     */
207
+    private TaOrgOrderDetail assembleTaOrgOrderDetail(String orderId, Integer orgId, Integer amount){
208
+        TaOrgOrderDetail taOrgOrderDetail = new TaOrgOrderDetail();
209
+
210
+        taOrgOrderDetail.setOrderId(orderId);
211
+        taOrgOrderDetail.setOrgId(orgId);
212
+        taOrgOrderDetail.setItemType(CommConstant.ITEM_TYPE_REFUND);
213
+        taOrgOrderDetail.setAmount(amount);
214
+
215
+        return taOrgOrderDetail;
216
+    }
217
+
218
+    /**
219
+     * 构造消费流水记录
220
+     * @param refundApplication
221
+     * @param userId
222
+     * @return
223
+     */
224
+    private TaOrgAccountDetailedList assembleAccountDetailList(TaOrgRefundApplication refundApplication, Integer userId){
225
+
226
+        TaUser taUser = selectUserById(userId);
227
+        TaOrgAccount taOrgAccount = selectTaOrgAccountById(refundApplication.getOrgId());
228
+
229
+        TaOrgAccountDetailedList taOrgAccountDetailed = new TaOrgAccountDetailedList();
230
+        taOrgAccountDetailed.setAccountId(taOrgAccount.getAccountId());
231
+        taOrgAccountDetailed.setOrgId(refundApplication.getOrgId());
232
+        taOrgAccountDetailed.setAmount(refundApplication.getAmount());
233
+        //1收入,-1支出
234
+        taOrgAccountDetailed.setSignType(CommConstant.STATUS_DELETE);
235
+        taOrgAccountDetailed.setRemark("线下订单退费");
236
+        taOrgAccountDetailed.setOrderId(refundApplication.getOrderId());
237
+        taOrgAccountDetailed.setUserId(userId);
238
+        taOrgAccountDetailed.setUserName(taUser.getUserName());
239
+
240
+        return taOrgAccountDetailed;
241
+    }
242
+
243
+    /**
244
+     * 构造交易凭证信息
245
+     * @param orgId
246
+     * @param taOrgAccount
247
+     * @param accountSerialNo
248
+     * @param orderId
249
+     * @param userId
250
+     * @return
251
+     */
252
+    public List<TaOrgAccountCertificate> assembleAccountCertificate(Integer orgId, TaOrgAccount taOrgAccount, Integer accountSerialNo, String orderId, Integer userId, String consumeType){
253
+        TaUser taUser = selectUserById(userId);
254
+        List<TaOrgAccountCertificate> taOrgAccountCertificateList = new ArrayList<>();
255
+
256
+        taOrgAccount.getCertificateList().forEach(e -> {
257
+            TaOrgAccountCertificate taOrgAccountCertificate = new TaOrgAccountCertificate();
258
+            taOrgAccountCertificate.setOrgId(orgId);
259
+            taOrgAccountCertificate.setAccountId(taOrgAccount.getAccountId());
260
+            taOrgAccountCertificate.setAccountSerialNo(accountSerialNo);
261
+            taOrgAccountCertificate.setOrderId(orderId);
262
+            taOrgAccountCertificate.setConsumptionType(CommConstant.ITEM_TYPE_RECHARGE.equals(consumeType) ? CommConstant.ITEM_TYPE_RECHARGE : CommConstant.ITEM_TYPE_REFUND);
263
+            taOrgAccountCertificate.setRemark(CommConstant.ITEM_TYPE_RECHARGE.equals(consumeType) ? "线下缴费" : "线下退费");
264
+            taOrgAccountCertificate.setUrl(e);
265
+            taOrgAccountCertificate.setCreateDate(LocalDateTime.now());
266
+            taOrgAccountCertificate.setUserId(userId);
267
+            taOrgAccountCertificate.setUserName(taUser.getUserName());
268
+            taOrgAccountCertificateList.add(taOrgAccountCertificate);
269
+        });
270
+
271
+        return taOrgAccountCertificateList;
272
+    }
273
+
274
+    /**
275
+     * 构造订单退款申请
276
+     * @param userId
277
+     * @return
278
+     */
279
+    private TaOrgRefundApplication assembleRefundApplication(Integer userId, String operateType, TaOrgRefundApplication refundApplication) {
280
+        TaUser taUser = selectUserById(userId);
281
+        TaOrgRefundApplication taOrgRefundApplication = new TaOrgRefundApplication();
282
+        taOrgRefundApplication.setAuditorId(userId);
283
+        taOrgRefundApplication.setAuditorName(taUser.getUserName());
284
+        taOrgRefundApplication.setAuditResult(CommConstant.ITEM_TYPE_REFUND.equals(operateType) ? "退款成功" : refundApplication.getAuditResult());
285
+        taOrgRefundApplication.setAuditStatus(CommConstant.ITEM_TYPE_REFUND.equals(operateType) ? "同意" : "不同意");
286
+
287
+        return taOrgRefundApplication;
288
+    }
289
+
290
+    private Integer updateOrgAccountBlock(TaOrgRefundApplication refundApplication){
291
+        //更新账户冻结记录
292
+        TaOrgAccountBlocked taOrgAccountBlocked = new TaOrgAccountBlocked();
293
+        taOrgAccountBlocked.setStatus(CommConstant.STATUS_UNACCALIMED);
294
+        QueryWrapper<TaOrgAccountBlocked> taOrgAccountBlockedQueryWrapper = new QueryWrapper<>();
295
+        taOrgAccountBlockedQueryWrapper.eq("org_id", refundApplication.getOrgId());
296
+        return taOrgAccountBlockedMapper.update(taOrgAccountBlocked, taOrgAccountBlockedQueryWrapper);
297
+    }
298
+
299
+    public TaOrgAccount selectTaOrgAccountById(Integer orgId){
300
+        QueryWrapper<TaOrgAccount> selectOneQuery = new QueryWrapper<>();
301
+        selectOneQuery.eq("org_id", orgId);
302
+        TaOrgAccount selectOneAccount = taOrgAccountMapper.selectOne(selectOneQuery);
303
+        return selectOneAccount;
304
+    }
305
+
306
+    /**
307
+     * 获取操作人
308
+     * @param userId
309
+     * @return
310
+     */
311
+    public TaUser selectUserById(Integer userId){
312
+        //获取操作人
313
+        QueryWrapper<TaUser> taUserQueryWrapper = new QueryWrapper<>();
314
+        taUserQueryWrapper.eq("user_id", userId);
315
+        TaUser taUser = taUserMapper.selectOne(taUserQueryWrapper);
316
+        return taUser;
317
+    }
318
+
21
 }
319
 }