Browse Source

新需求

魏超 5 years ago
parent
commit
e7eacba3a3

+ 25
- 2
src/main/java/com/huiju/estateagents/redpack/controller/TaOrgAccountController.java View File

158
      * @param id  实体ID
158
      * @param id  实体ID
159
      */
159
      */
160
     @RequestMapping(value="/taOrgAccount/recharge/{id}",method= RequestMethod.PUT)
160
     @RequestMapping(value="/taOrgAccount/recharge/{id}",method= RequestMethod.PUT)
161
-    public ResponseBean taOrgAccountDetailedListGet(@PathVariable String id, @RequestBody TaOrgAccount taOrgAccount,
161
+    public ResponseBean taOrgAccountRecharge(@PathVariable String id, @RequestBody TaOrgAccount taOrgAccount,
162
                                                     HttpServletRequest request){
162
                                                     HttpServletRequest request){
163
         ResponseBean responseBean = new ResponseBean();
163
         ResponseBean responseBean = new ResponseBean();
164
         try {
164
         try {
167
             iTaOrgAccountService.rechargeAccount(id, taOrgAccount, 26, 2149);
167
             iTaOrgAccountService.rechargeAccount(id, taOrgAccount, 26, 2149);
168
         }catch (Exception e){
168
         }catch (Exception e){
169
             e.printStackTrace();
169
             e.printStackTrace();
170
-            logger.error("taOrgAccountDetailedListDelete -=- {}",e.toString());
170
+            logger.error("taOrgAccountRecharge -=- {}",e.toString());
171
+            responseBean.addError(e.getMessage());
172
+        }
173
+        return responseBean;
174
+    }
175
+
176
+    /**
177
+     * 系统账户退款
178
+     * @param id
179
+     * @param taOrgAccount
180
+     * @param request
181
+     * @return
182
+     */
183
+    @RequestMapping(value = "/taOrgAccount/refund/{id}")
184
+    public ResponseBean taOrgAccountRefund(@PathVariable String id, @RequestBody TaOrgAccount taOrgAccount,
185
+                                           HttpServletRequest request){
186
+        ResponseBean responseBean = new ResponseBean();
187
+        try {
188
+            Integer orgId = getOrgId(request);
189
+            Integer userId = getUserId(request);
190
+            responseBean = iTaOrgAccountService.refundAccount(id, taOrgAccount, 26, 2149);
191
+        }catch (Exception e){
192
+            e.printStackTrace();
193
+            logger.error("taOrgAccountRefund -=- {}",e.toString());
171
             responseBean.addError(e.getMessage());
194
             responseBean.addError(e.getMessage());
172
         }
195
         }
173
         return responseBean;
196
         return responseBean;

+ 6
- 0
src/main/java/com/huiju/estateagents/redpack/entity/TaOrgAccount.java View File

90
      */
90
      */
91
     @TableField(exist = false)
91
     @TableField(exist = false)
92
     private Integer rechargeAmount;
92
     private Integer rechargeAmount;
93
+
94
+    /**
95
+     * 退费金额
96
+     */
97
+    @TableField(exist = false)
98
+    private Integer refundAmount;
93
 }
99
 }

+ 10
- 0
src/main/java/com/huiju/estateagents/redpack/service/ITaOrgAccountService.java View File

21
      * @return
21
      * @return
22
      */
22
      */
23
     ResponseBean rechargeAccount(String accountId, TaOrgAccount taOrgAccount, Integer orgId, Integer userId);
23
     ResponseBean rechargeAccount(String accountId, TaOrgAccount taOrgAccount, Integer orgId, Integer userId);
24
+
25
+    /**
26
+     * 账户退费接口
27
+     * @param accountId
28
+     * @param taOrgAccount
29
+     * @param orgId
30
+     * @param userId
31
+     * @return
32
+     */
33
+    ResponseBean refundAccount(String accountId, TaOrgAccount taOrgAccount, Integer orgId, Integer userId);
24
 }
34
 }

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

6
 import java.util.List;
6
 import java.util.List;
7
 
7
 
8
 import org.apache.commons.collections.CollectionUtils;
8
 import org.apache.commons.collections.CollectionUtils;
9
+import org.apache.poi.ss.formula.functions.T;
9
 import org.springframework.beans.factory.annotation.Autowired;
10
 import org.springframework.beans.factory.annotation.Autowired;
10
 import org.springframework.stereotype.Service;
11
 import org.springframework.stereotype.Service;
11
 import org.springframework.transaction.annotation.Transactional;
12
 import org.springframework.transaction.annotation.Transactional;
18
 import com.huiju.estateagents.common.CommConstant;
19
 import com.huiju.estateagents.common.CommConstant;
19
 import com.huiju.estateagents.common.CommonUtils;
20
 import com.huiju.estateagents.common.CommonUtils;
20
 import com.huiju.estateagents.redpack.entity.TaOrgAccount;
21
 import com.huiju.estateagents.redpack.entity.TaOrgAccount;
22
+import com.huiju.estateagents.redpack.entity.TaOrgAccountBlocked;
21
 import com.huiju.estateagents.redpack.entity.TaOrgAccountCertificate;
23
 import com.huiju.estateagents.redpack.entity.TaOrgAccountCertificate;
22
 import com.huiju.estateagents.redpack.entity.TaOrgAccountDetailedList;
24
 import com.huiju.estateagents.redpack.entity.TaOrgAccountDetailedList;
23
 import com.huiju.estateagents.redpack.entity.TaOrgOrder;
25
 import com.huiju.estateagents.redpack.entity.TaOrgOrder;
24
 import com.huiju.estateagents.redpack.entity.TaOrgOrderDetail;
26
 import com.huiju.estateagents.redpack.entity.TaOrgOrderDetail;
27
+import com.huiju.estateagents.redpack.entity.TaOrgRefundApplication;
28
+import com.huiju.estateagents.redpack.mapper.TaOrgAccountBlockedMapper;
25
 import com.huiju.estateagents.redpack.mapper.TaOrgAccountCertificateMapper;
29
 import com.huiju.estateagents.redpack.mapper.TaOrgAccountCertificateMapper;
26
 import com.huiju.estateagents.redpack.mapper.TaOrgAccountDetailedListMapper;
30
 import com.huiju.estateagents.redpack.mapper.TaOrgAccountDetailedListMapper;
27
 import com.huiju.estateagents.redpack.mapper.TaOrgAccountMapper;
31
 import com.huiju.estateagents.redpack.mapper.TaOrgAccountMapper;
28
 import com.huiju.estateagents.redpack.mapper.TaOrgOrderDetailMapper;
32
 import com.huiju.estateagents.redpack.mapper.TaOrgOrderDetailMapper;
29
 import com.huiju.estateagents.redpack.mapper.TaOrgOrderMapper;
33
 import com.huiju.estateagents.redpack.mapper.TaOrgOrderMapper;
34
+import com.huiju.estateagents.redpack.mapper.TaOrgRefundApplicationMapper;
30
 import com.huiju.estateagents.redpack.service.ITaOrgAccountService;
35
 import com.huiju.estateagents.redpack.service.ITaOrgAccountService;
31
 
36
 
32
 import io.swagger.models.auth.In;
37
 import io.swagger.models.auth.In;
57
     @Autowired
62
     @Autowired
58
     private TaOrgAccountDetailedListMapper taOrgAccountDetailedListMapper;
63
     private TaOrgAccountDetailedListMapper taOrgAccountDetailedListMapper;
59
 
64
 
65
+    @Autowired
66
+    private TaOrgRefundApplicationMapper taOrgRefundApplicationMapper;
67
+
68
+    @Autowired
69
+    private TaOrgAccountBlockedMapper taOrgAccountBlockedMapper;
70
+
60
     @Autowired
71
     @Autowired
61
     private TaUserMapper taUserMapper;
72
     private TaUserMapper taUserMapper;
62
 
73
 
70
         int rechargeAccountInsertResult = taOrgAccountMapper.updateById(rechargeAccount);
81
         int rechargeAccountInsertResult = taOrgAccountMapper.updateById(rechargeAccount);
71
 
82
 
72
         //新增订单记录
83
         //新增订单记录
73
-        TaOrgOrder taOrgOrder = assembleTaOrgOrder(orgId, taOrgAccount.getRechargeAmount(), userId);
84
+        TaOrgOrder taOrgOrder = assembleTaOrgOrder(orgId, taOrgAccount.getRechargeAmount(), userId, CommConstant.ITEM_TYPE_RECHARGE);
74
         int taOrgOrderInsertResult = taOrgOrderMapper.insert(taOrgOrder);
85
         int taOrgOrderInsertResult = taOrgOrderMapper.insert(taOrgOrder);
75
 
86
 
76
         //新增关联订单明细
87
         //新增关联订单明细
77
-        TaOrgOrderDetail taOrgOrderDetail = assembleTaOrgOrderDetail(taOrgOrder.getOrderId(), orgId, taOrgAccount.getRechargeAmount());
88
+        TaOrgOrderDetail taOrgOrderDetail = assembleTaOrgOrderDetail(taOrgOrder.getOrderId(), orgId, taOrgAccount.getRechargeAmount(), CommConstant.ITEM_TYPE_RECHARGE);
78
         int taOrgOrderDetailInsertResult = taOrgOrderDetailMapper.insert(taOrgOrderDetail);
89
         int taOrgOrderDetailInsertResult = taOrgOrderDetailMapper.insert(taOrgOrderDetail);
79
 
90
 
80
         //新增账户消费流水记录
91
         //新增账户消费流水记录
81
-        TaOrgAccountDetailedList taOrgAccountDetailedList = assembleAccountDetailList(orgId, taOrgAccount, taOrgOrder.getOrderId(), userId);
92
+        TaOrgAccountDetailedList taOrgAccountDetailedList = assembleAccountDetailList(orgId, taOrgAccount, taOrgOrder.getOrderId(), userId, CommConstant.ITEM_TYPE_RECHARGE);
82
         int taOrgAccountDetailedListInsertResult = taOrgAccountDetailedListMapper.insert(taOrgAccountDetailedList);
93
         int taOrgAccountDetailedListInsertResult = taOrgAccountDetailedListMapper.insert(taOrgAccountDetailedList);
83
 
94
 
84
         //插入凭证记录
95
         //插入凭证记录
85
         if (CollectionUtils.isNotEmpty(taOrgAccount.getCertificateList())){
96
         if (CollectionUtils.isNotEmpty(taOrgAccount.getCertificateList())){
86
-            List<TaOrgAccountCertificate> taOrgAccountCertificateList = assembleAccountCertificate(orgId, taOrgAccount, taOrgAccountDetailedList.getSerialNo(), taOrgOrder.getOrderId(), userId);
97
+            List<TaOrgAccountCertificate> taOrgAccountCertificateList = assembleAccountCertificate(orgId, taOrgAccount, taOrgAccountDetailedList.getSerialNo(), taOrgOrder.getOrderId(), userId, CommConstant.ITEM_TYPE_RECHARGE);
87
             taOrgAccountCertificateList.forEach(e -> {
98
             taOrgAccountCertificateList.forEach(e -> {
88
                 taOrgAccountCertificateMapper.insert(e);
99
                 taOrgAccountCertificateMapper.insert(e);
89
             });
100
             });
100
         return responseBean;
111
         return responseBean;
101
     }
112
     }
102
 
113
 
114
+    @Override
115
+    @Transactional(rollbackFor = {RuntimeException.class})
116
+    public ResponseBean refundAccount(String accountId, TaOrgAccount taOrgAccount, Integer orgId, Integer userId) {
117
+        ResponseBean responseBean = new ResponseBean();
118
+
119
+        //更新系统账户余额
120
+        TaOrgAccount selectOneAccount = selectTaOrgAccountById(accountId);
121
+        if (selectOneAccount.getAvailableBalance() < taOrgAccount.getRefundAmount()){
122
+            responseBean.addError("退款额不能大于余额");
123
+            return responseBean;
124
+        }
125
+        TaOrgAccount refundAccount = assembleRefundAccount(accountId, taOrgAccount);
126
+        taOrgAccountMapper.updateById(refundAccount);
127
+
128
+        //新增订单记录
129
+        TaOrgOrder taOrgOrder = assembleTaOrgOrder(orgId, taOrgAccount.getRefundAmount(), userId, CommConstant.ITEM_TYPE_REFUND);
130
+        int taOrgOrderInsertResult = taOrgOrderMapper.insert(taOrgOrder);
131
+
132
+        //新增关联订单明细
133
+        TaOrgOrderDetail taOrgOrderDetail = assembleTaOrgOrderDetail(taOrgOrder.getOrderId(), orgId, taOrgAccount.getRefundAmount(), CommConstant.ITEM_TYPE_REFUND);
134
+        int taOrgOrderDetailInsertResult = taOrgOrderDetailMapper.insert(taOrgOrderDetail);
135
+
136
+        //新增账户消费流水
137
+        TaOrgAccountDetailedList taOrgAccountDetailedList = assembleAccountDetailList(orgId, taOrgAccount, taOrgOrder.getOrderId(), userId, CommConstant.ITEM_TYPE_REFUND);
138
+        int taOrgAccountDetailedListInsertResult = taOrgAccountDetailedListMapper.insert(taOrgAccountDetailedList);
139
+
140
+        //插入凭证记录
141
+        if (CollectionUtils.isNotEmpty(taOrgAccount.getCertificateList())){
142
+            List<TaOrgAccountCertificate> taOrgAccountCertificateList = assembleAccountCertificate(orgId, taOrgAccount, taOrgAccountDetailedList.getSerialNo(), taOrgOrder.getOrderId(), userId, CommConstant.ITEM_TYPE_REFUND);
143
+            taOrgAccountCertificateList.forEach(e -> {
144
+                taOrgAccountCertificateMapper.insert(e);
145
+            });
146
+        }
147
+
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 ||
163
+                taOrgOrderInsertResult < 1 ||
164
+                taOrgOrderDetailInsertResult < 1 ||
165
+                taOrgAccountDetailedListInsertResult < 1 ||
166
+                taOrgRefundApplicationUpdateResult < 1 ||
167
+                taOrgAccountBlockedUpdateResult < 1){
168
+            responseBean.addError("退费失败");
169
+            return responseBean;
170
+        }
171
+
172
+        return responseBean;
173
+    }
174
+
103
     /**
175
     /**
104
      * 构造充值账户
176
      * 构造充值账户
105
      * @param accountId
177
      * @param accountId
107
      * @return
179
      * @return
108
      */
180
      */
109
     private TaOrgAccount assembleRechargeAccount(String accountId, TaOrgAccount taOrgAccount){
181
     private TaOrgAccount assembleRechargeAccount(String accountId, TaOrgAccount taOrgAccount){
110
-        QueryWrapper<TaOrgAccount> selectOneQuery = new QueryWrapper<>();
111
-        selectOneQuery.eq("account_id", accountId);
112
-        TaOrgAccount selectOneAccount = taOrgAccountMapper.selectOne(selectOneQuery);
182
+        TaOrgAccount selectOneAccount = selectTaOrgAccountById(accountId);
113
 
183
 
114
         TaOrgAccount rechargeAccount = new TaOrgAccount();
184
         TaOrgAccount rechargeAccount = new TaOrgAccount();
115
         rechargeAccount.setAccountId(accountId);
185
         rechargeAccount.setAccountId(accountId);
116
-        if (selectOneAccount.getAvailableBalance() == 0){
117
-            rechargeAccount.setAvailableBalance(taOrgAccount.getRechargeAmount());
118
-        }else{
119
-            rechargeAccount.setAvailableBalance(selectOneAccount.getAvailableBalance() + taOrgAccount.getRechargeAmount());
120
-        }
121
-
122
-        if (selectOneAccount.getRealBalance() == 0){
123
-            rechargeAccount.setRealBalance(taOrgAccount.getRechargeAmount());
124
-        }else{
125
-            rechargeAccount.setRealBalance(selectOneAccount.getRealBalance() + taOrgAccount.getRechargeAmount());
126
-        }
186
+        rechargeAccount.setAvailableBalance(selectOneAccount.getAvailableBalance() + taOrgAccount.getRechargeAmount());
187
+        rechargeAccount.setRealBalance(selectOneAccount.getRealBalance() + taOrgAccount.getRechargeAmount());
127
         rechargeAccount.setModifyDate(LocalDateTime.now());
188
         rechargeAccount.setModifyDate(LocalDateTime.now());
128
 
189
 
129
         return rechargeAccount;
190
         return rechargeAccount;
130
     }
191
     }
131
 
192
 
132
-    public List<TaOrgAccountCertificate> assembleAccountCertificate(Integer orgId, TaOrgAccount taOrgAccount, Integer accountSerialNo, String orderId, Integer userId){
193
+    /**
194
+     * 构造交易凭证信息
195
+     * @param orgId
196
+     * @param taOrgAccount
197
+     * @param accountSerialNo
198
+     * @param orderId
199
+     * @param userId
200
+     * @return
201
+     */
202
+    public List<TaOrgAccountCertificate> assembleAccountCertificate(Integer orgId, TaOrgAccount taOrgAccount, Integer accountSerialNo, String orderId, Integer userId, String consumeType){
133
         TaUser taUser = selectUserById(userId);
203
         TaUser taUser = selectUserById(userId);
134
         List<TaOrgAccountCertificate> taOrgAccountCertificateList = new ArrayList<>();
204
         List<TaOrgAccountCertificate> taOrgAccountCertificateList = new ArrayList<>();
135
 
205
 
139
             taOrgAccountCertificate.setAccountId(taOrgAccount.getAccountId());
209
             taOrgAccountCertificate.setAccountId(taOrgAccount.getAccountId());
140
             taOrgAccountCertificate.setAccountSerialNo(accountSerialNo);
210
             taOrgAccountCertificate.setAccountSerialNo(accountSerialNo);
141
             taOrgAccountCertificate.setOrderId(orderId);
211
             taOrgAccountCertificate.setOrderId(orderId);
142
-            taOrgAccountCertificate.setConsumptionType(CommConstant.ITEM_TYPE_RECHARGE);
143
-            taOrgAccountCertificate.setRemark("线下充值缴费");
212
+            taOrgAccountCertificate.setConsumptionType(CommConstant.ITEM_TYPE_RECHARGE.equals(consumeType) ? CommConstant.ITEM_TYPE_RECHARGE : CommConstant.ITEM_TYPE_REFUND);
213
+            taOrgAccountCertificate.setRemark(CommConstant.ITEM_TYPE_RECHARGE.equals(consumeType) ? "线下缴费" : "线下退费");
144
             taOrgAccountCertificate.setUrl(e);
214
             taOrgAccountCertificate.setUrl(e);
145
             taOrgAccountCertificate.setCreateDate(LocalDateTime.now());
215
             taOrgAccountCertificate.setCreateDate(LocalDateTime.now());
146
             taOrgAccountCertificate.setUserId(userId);
216
             taOrgAccountCertificate.setUserId(userId);
157
      * @param userId
227
      * @param userId
158
      * @return
228
      * @return
159
      */
229
      */
160
-    private TaOrgOrder assembleTaOrgOrder(Integer orgId, Integer amount, Integer userId){
230
+    private TaOrgOrder assembleTaOrgOrder(Integer orgId, Integer amount, Integer userId, String consumeType){
161
 
231
 
162
         TaUser taUser = selectUserById(userId);
232
         TaUser taUser = selectUserById(userId);
163
         TaOrgOrder taOrgOrder = new TaOrgOrder();
233
         TaOrgOrder taOrgOrder = new TaOrgOrder();
164
         taOrgOrder.setOrgId(orgId);
234
         taOrgOrder.setOrgId(orgId);
165
-        taOrgOrder.setTradeNo(CommonUtils.generateTradeNo(CommConstant.RECHARGE));
235
+        taOrgOrder.setTradeNo(CommonUtils.generateTradeNo(CommConstant.ITEM_TYPE_RECHARGE.equals(consumeType) ? CommConstant.RECHARGE : CommConstant.REFUND));
166
         taOrgOrder.setAmount(amount);
236
         taOrgOrder.setAmount(amount);
167
         taOrgOrder.setCreateDate(LocalDateTime.now());
237
         taOrgOrder.setCreateDate(LocalDateTime.now());
168
         taOrgOrder.setExpiryDate(LocalDateTime.now());
238
         taOrgOrder.setExpiryDate(LocalDateTime.now());
169
-        taOrgOrder.setRemark("线下充值缴费");
239
+        taOrgOrder.setRemark(CommConstant.ITEM_TYPE_RECHARGE.equals(consumeType) ? "线下账户缴费" : "线下账户退费");
170
         taOrgOrder.setTradingStatus(String.valueOf(CommConstant.STATUS_NORMAL));
240
         taOrgOrder.setTradingStatus(String.valueOf(CommConstant.STATUS_NORMAL));
171
         taOrgOrder.setIsOffline(true);
241
         taOrgOrder.setIsOffline(true);
172
         taOrgOrder.setUserId(userId);
242
         taOrgOrder.setUserId(userId);
175
         return taOrgOrder;
245
         return taOrgOrder;
176
     }
246
     }
177
 
247
 
178
-    private TaOrgOrderDetail assembleTaOrgOrderDetail(String orderId, Integer orgId, Integer amount){
248
+    /**
249
+     * 构造交订单详情信息
250
+     * @param orderId
251
+     * @param orgId
252
+     * @param amount
253
+     * @return
254
+     */
255
+    private TaOrgOrderDetail assembleTaOrgOrderDetail(String orderId, Integer orgId, Integer amount, String consumeType){
179
         TaOrgOrderDetail taOrgOrderDetail = new TaOrgOrderDetail();
256
         TaOrgOrderDetail taOrgOrderDetail = new TaOrgOrderDetail();
180
 
257
 
181
         taOrgOrderDetail.setOrderId(orderId);
258
         taOrgOrderDetail.setOrderId(orderId);
182
         taOrgOrderDetail.setOrgId(orgId);
259
         taOrgOrderDetail.setOrgId(orgId);
183
-        taOrgOrderDetail.setItemType(CommConstant.ITEM_TYPE_RECHARGE);
260
+        taOrgOrderDetail.setItemType(CommConstant.ITEM_TYPE_RECHARGE.equals(consumeType) ? CommConstant.ITEM_TYPE_RECHARGE : CommConstant.ITEM_TYPE_REFUND);
184
         taOrgOrderDetail.setAmount(amount);
261
         taOrgOrderDetail.setAmount(amount);
185
 
262
 
186
         return taOrgOrderDetail;
263
         return taOrgOrderDetail;
194
      * @param userId
271
      * @param userId
195
      * @return
272
      * @return
196
      */
273
      */
197
-    private TaOrgAccountDetailedList assembleAccountDetailList(Integer orgId, TaOrgAccount taOrgAccount, String orderId, Integer userId){
274
+    private TaOrgAccountDetailedList assembleAccountDetailList(Integer orgId, TaOrgAccount taOrgAccount, String orderId, Integer userId, String consumeType){
198
 
275
 
199
         TaUser taUser = selectUserById(userId);
276
         TaUser taUser = selectUserById(userId);
200
         TaOrgAccountDetailedList taOrgAccountDetailed = new TaOrgAccountDetailedList();
277
         TaOrgAccountDetailedList taOrgAccountDetailed = new TaOrgAccountDetailedList();
201
         taOrgAccountDetailed.setAccountId(taOrgAccount.getAccountId());
278
         taOrgAccountDetailed.setAccountId(taOrgAccount.getAccountId());
202
         taOrgAccountDetailed.setOrgId(orgId);
279
         taOrgAccountDetailed.setOrgId(orgId);
203
-        taOrgAccountDetailed.setAmount(taOrgAccount.getRechargeAmount());
280
+        taOrgAccountDetailed.setAmount(CommConstant.ITEM_TYPE_RECHARGE.equals(consumeType) ? taOrgAccount.getRechargeAmount() : taOrgAccount.getRefundAmount());
204
         //1收入,-1支出
281
         //1收入,-1支出
205
-        taOrgAccountDetailed.setSignType(CommConstant.STATUS_NORMAL);
206
-        taOrgAccountDetailed.setRemark("线下充值缴费");
282
+        taOrgAccountDetailed.setSignType(CommConstant.ITEM_TYPE_RECHARGE.equals(consumeType) ? CommConstant.STATUS_NORMAL : CommConstant.STATUS_DELETE);
283
+        taOrgAccountDetailed.setRemark(CommConstant.ITEM_TYPE_RECHARGE.equals(consumeType) ? "线下账户缴费" : "线下账户退费");
207
         taOrgAccountDetailed.setOrderId(orderId);
284
         taOrgAccountDetailed.setOrderId(orderId);
208
         taOrgAccountDetailed.setUserId(userId);
285
         taOrgAccountDetailed.setUserId(userId);
209
         taOrgAccountDetailed.setUserName(taUser.getUserName());
286
         taOrgAccountDetailed.setUserName(taUser.getUserName());
211
         return taOrgAccountDetailed;
288
         return taOrgAccountDetailed;
212
     }
289
     }
213
 
290
 
291
+    /**
292
+     * 构造退费账户
293
+     * @param accountId
294
+     * @param taOrgAccount
295
+     * @return
296
+     */
297
+    private TaOrgAccount assembleRefundAccount(String accountId, TaOrgAccount taOrgAccount){
298
+        TaOrgAccount selectOneAccount = selectTaOrgAccountById(accountId);
299
+
300
+        TaOrgAccount refundAccount = new TaOrgAccount();
301
+        refundAccount.setAccountId(accountId);
302
+        refundAccount.setAvailableBalance(selectOneAccount.getAvailableBalance() - taOrgAccount.getRefundAmount());
303
+        refundAccount.setRealBalance(selectOneAccount.getRealBalance() - taOrgAccount.getRefundAmount());
304
+        refundAccount.setTotalRefund(taOrgAccount.getRefundAmount() + selectOneAccount.getTotalRefund());
305
+        refundAccount.setModifyDate(LocalDateTime.now());
306
+
307
+        return refundAccount;
308
+    }
309
+
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){
327
+        QueryWrapper<TaOrgAccount> selectOneQuery = new QueryWrapper<>();
328
+        selectOneQuery.eq("account_id", accountId);
329
+        TaOrgAccount selectOneAccount = taOrgAccountMapper.selectOne(selectOneQuery);
330
+        return selectOneAccount;
331
+    }
332
+
214
     public TaUser selectUserById(Integer userId){
333
     public TaUser selectUserById(Integer userId){
215
         //获取操作人
334
         //获取操作人
216
         QueryWrapper<TaUser> taUserQueryWrapper = new QueryWrapper<>();
335
         QueryWrapper<TaUser> taUserQueryWrapper = new QueryWrapper<>();