diff --git a/src/main/java/com/quinn/controller/wx/WxBillController.java b/src/main/java/com/quinn/controller/wx/WxBillController.java index 8acce90..f98ac9d 100644 --- a/src/main/java/com/quinn/controller/wx/WxBillController.java +++ b/src/main/java/com/quinn/controller/wx/WxBillController.java @@ -2,10 +2,13 @@ package com.quinn.controller.wx; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.quinn.common.wx.AccBillDTO; +import com.quinn.common.wx.AccBillType; import com.quinn.common.wx.ListBillByAccount; import com.quinn.dto.res.ResponseDTO; import com.quinn.pojo.AccBill; +import com.quinn.pojo.AccSetting; import com.quinn.service.AccBillService; +import com.quinn.service.AccSettingService; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -14,7 +17,10 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** *

@@ -30,6 +36,8 @@ public class WxBillController extends BaseWxController{ @Resource AccBillService accBillService; + @Resource + AccSettingService accSettingService; @PostMapping("user/bills") public ResponseDTO getBills(HttpServletRequest request){ @@ -46,7 +54,32 @@ public class WxBillController extends BaseWxController{ @PostMapping("user/bills/account") public ResponseDTO getBillsByBills(HttpServletRequest request, ListBillByAccount listBillByAccount){ List accBills = accBillService.listBillByAccount(getLoginUserId(request),listBillByAccount.getSid(),listBillByAccount.getDateRange()); - return ResponseDTO.ok().setData(accBills); + double expendBalance = 0; + double incomeBalance = 0; + List payList = accBills.stream().filter(x -> { + AccBillType billType = x.getBillType(); + return AccBillType.EXPEND.equals(billType) || + ((AccBillType.REPAYMENT.equals(billType) || AccBillType.TRANSFER.equals(billType)) + && listBillByAccount.getSid() == x.getFromAccount()); + }).collect(Collectors.toList()); + List incomeList = accBills.stream().filter(x -> { + AccBillType billType = x.getBillType(); + return AccBillType.INCOME.equals(billType) || + ((AccBillType.REPAYMENT.equals(billType) || AccBillType.TRANSFER.equals(billType)) + && listBillByAccount.getSid() == x.getAccount()); + }).collect(Collectors.toList()); + for (AccBillDTO accBillDTO : payList) { + expendBalance = expendBalance + accBillDTO.getMoney(); + } + for (AccBillDTO accBillDTO : incomeList) { + incomeBalance = incomeBalance + accBillDTO.getMoney(); + } + Map result = new HashMap<>(); + result.put("incomeList",incomeList); + result.put("payList",payList); + result.put("expendBalance",expendBalance); + result.put("incomeBalance",incomeBalance); + return ResponseDTO.ok().setData(result); } /** @@ -79,6 +112,9 @@ public class WxBillController extends BaseWxController{ if (accBill.getId() != -1){ AccBill byId = accBillService.getById(accBill.getId()); if (byId != null){ + modifyBalance(true,byId); + double balance = modifyBalance(false, accBill); + byId.setBalance(balance); byId.setId(accBill.getId()); byId.setName(accBill.getName()); byId.setBillType(accBill.getBillType()); @@ -93,10 +129,26 @@ public class WxBillController extends BaseWxController{ }else { accBill.setGmtCreate(new Date()); accBill.setUserId(getLoginUserId(request)); + double balance = modifyBalance(false, accBill); + accBill.setBalance(balance); accBillService.save(accBill); } return ResponseDTO.ok(); } + private double modifyBalance(boolean isBack,AccBill accBill){ + AccBillType billType = accBill.getBillType(); + double money = isBack ? - accBill.getMoney() : accBill.getMoney(); + accSettingService.updateBalance(accBill.getAccount(),AccBillType.EXPEND.equals(billType) ? -money : money); + if (AccBillType.REPAYMENT.equals(billType) || AccBillType.TRANSFER.equals(billType)){ + accSettingService.updateBalance(accBill.getFromAccount(),-money); + } + if (AccBillType.INCOME.equals(billType) || AccBillType.EXPEND.equals(billType)){ + AccSetting byId = accSettingService.getById(accBill.getAccount()); + return byId.getBalance(); + } + return 0; + } + } diff --git a/src/main/java/com/quinn/mapper/AccSettingMapper.java b/src/main/java/com/quinn/mapper/AccSettingMapper.java index e23a155..8cd3612 100644 --- a/src/main/java/com/quinn/mapper/AccSettingMapper.java +++ b/src/main/java/com/quinn/mapper/AccSettingMapper.java @@ -18,4 +18,6 @@ import java.util.List; public interface AccSettingMapper extends BaseMapper { List getBillByType(String userId, AccSettingType settingType); + + void updateBalance(int accId, double money); } diff --git a/src/main/java/com/quinn/mapper/xml/AccBillMapper.xml b/src/main/java/com/quinn/mapper/xml/AccBillMapper.xml index 22abcc4..ee08fbe 100644 --- a/src/main/java/com/quinn/mapper/xml/AccBillMapper.xml +++ b/src/main/java/com/quinn/mapper/xml/AccBillMapper.xml @@ -21,7 +21,9 @@ (select name from qn_acc_setting b where b.id = a.money_type) "moneyName", (select icon from qn_acc_setting b where b.id = a.money_type) "moneyIcon", DATE_FORMAT(a.date,'%Y-%m-%d') date - from qn_acc_bill a where a.user_id = #{userId} and a.account = #{accountId} and a.date = ]]> #{startDate} a.date #{startDate} + from qn_acc_bill a where a.user_id = #{userId} + and (a.account = #{accountId} or a.from_account = #{accountId}) + and a.date = ]]> #{startDate} and a.date #{endDate} order by a.date desc @@ -33,7 +35,7 @@ (select name from qn_acc_setting b where b.id = a.money_type) "moneyName", (select icon from qn_acc_setting b where b.id = a.money_type) "moneyIcon", DATE_FORMAT(a.date,'%Y-%m-%d') date - from qn_acc_bill a where a.user_id = #{userId} and a.date = ]]> #{startDate} a.date #{startDate} + from qn_acc_bill a where a.user_id = #{userId} and a.date = ]]> #{startDate} and a.date #{endDate} order by a.date desc @@ -45,7 +47,7 @@ (select name from qn_acc_setting b where b.id = a.money_type) "moneyName", (select icon from qn_acc_setting b where b.id = a.money_type) "moneyIcon", DATE_FORMAT(a.date,'%Y-%m-%d') date - from qn_acc_bill a where a.user_id = #{userId} and a.bill_type='INCOME' and a.date = ]]> #{startDate} a.date #{startDate} + from qn_acc_bill a where a.user_id = #{userId} and a.bill_type='INCOME' and a.date = ]]> #{startDate} and a.date #{endDate} order by a.money desc @@ -57,7 +59,7 @@ (select name from qn_acc_setting b where b.id = a.money_type) "moneyName", (select icon from qn_acc_setting b where b.id = a.money_type) "moneyIcon", DATE_FORMAT(a.date,'%Y-%m-%d') date - from qn_acc_bill a where a.user_id = #{userId} and a.bill_type='EXPEND' and a.date = ]]> #{startDate} a.date #{startDate} + from qn_acc_bill a where a.user_id = #{userId} and a.bill_type='EXPEND' and a.date = ]]> #{startDate} and a.date #{endDate} order by a.money desc diff --git a/src/main/java/com/quinn/mapper/xml/AccSettingMapper.xml b/src/main/java/com/quinn/mapper/xml/AccSettingMapper.xml index aba3871..96fa164 100644 --- a/src/main/java/com/quinn/mapper/xml/AccSettingMapper.xml +++ b/src/main/java/com/quinn/mapper/xml/AccSettingMapper.xml @@ -8,4 +8,8 @@ group by a.bill_type + + update qn_acc_setting set balance = balance + #{money} where id = #{accId} + + diff --git a/src/main/java/com/quinn/mapper/xml/UserMapper.xml b/src/main/java/com/quinn/mapper/xml/UserMapper.xml index 1376eff..07893bf 100644 --- a/src/main/java/com/quinn/mapper/xml/UserMapper.xml +++ b/src/main/java/com/quinn/mapper/xml/UserMapper.xml @@ -3,7 +3,7 @@ diff --git a/src/main/java/com/quinn/service/AccSettingService.java b/src/main/java/com/quinn/service/AccSettingService.java index 8184549..51e8070 100644 --- a/src/main/java/com/quinn/service/AccSettingService.java +++ b/src/main/java/com/quinn/service/AccSettingService.java @@ -19,4 +19,6 @@ public interface AccSettingService extends IService { List getBillByType(String userId, AccSettingType accSetting); + void updateBalance(int accId,double money); + } diff --git a/src/main/java/com/quinn/service/impl/AccSettingServiceImpl.java b/src/main/java/com/quinn/service/impl/AccSettingServiceImpl.java index c4ba98c..55ea1e1 100644 --- a/src/main/java/com/quinn/service/impl/AccSettingServiceImpl.java +++ b/src/main/java/com/quinn/service/impl/AccSettingServiceImpl.java @@ -29,4 +29,9 @@ public class AccSettingServiceImpl extends ServiceImpl getBillByType(String userId, AccSettingType settingType) { return accSettingMapper.getBillByType(userId,settingType); } + + @Override + public void updateBalance(int accId, double money) { + accSettingMapper.updateBalance(accId,money); + } }