StatRefundClass.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace biz\stat\classes;
  3. use biz\base\classes\BaseClass;
  4. use biz\stat\models\StatRefund;
  5. use common\components\dict;
  6. class StatRefundClass extends BaseClass
  7. {
  8. public static $baseFile = '\biz\stat\models\StatRefund';
  9. //获取总和 ssh 20210829
  10. public static function getSum($where)
  11. {
  12. $amount = self::sum($where, 'amount');
  13. return empty($amount) ? 0 : $amount;
  14. }
  15. //退款统计 ssh 20210827
  16. public static function replace($main, $shop, $payWay, $amount, $date = null)
  17. {
  18. $sjId = $shop->sjId ?? 0;
  19. $mainId = $main->id ?? 0;
  20. $time = $date == null ? date('Ymd') : $date;
  21. $stat = self::getByCondition(['sjId' => $sjId, 'mainId' => $mainId, 'time' => $time], true);
  22. if (empty($stat)) {
  23. $stat = self::add(['mainId' => $mainId, 'sjId' => $sjId, 'time' => $time, 'num' => 0], true);
  24. }
  25. $id = $stat->id;
  26. $unique = self::getLockById($id);
  27. $currentAmount = bcadd($unique->amount, $amount, 2);
  28. $unique->amount = $currentAmount;
  29. $unique->totalAmount = $main->totalRefund;
  30. $unique->num += 1;
  31. $map = dict::getDict('payWay');
  32. switch ($payWay) {
  33. case $map['wxPay']:
  34. $current = bcadd($unique->wx, $amount, 2);
  35. $unique->wx = $current;
  36. break;
  37. case $map['alipay']:
  38. $current = bcadd($unique->alipay, $amount, 2);
  39. $unique->alipay = $current;
  40. break;
  41. case $map['balancePay']:
  42. $current = bcadd($unique->balance, $amount, 2);
  43. $unique->balance = $current;
  44. break;
  45. case $map['debtPay']:
  46. $current = bcadd($unique->debt, $amount, 2);
  47. $unique->debt = $current;
  48. break;
  49. case $map['cash']:
  50. $current = bcadd($unique->cash, $amount, 2);
  51. $unique->cash = $current;
  52. break;
  53. case $map['bankCard']:
  54. $current = bcadd($unique->bank, $amount, 2);
  55. $unique->bank = $current;
  56. break;
  57. default:
  58. }
  59. $unique->save();
  60. StatRefundMonthClass::replace($main, $shop, $payWay, $amount, $time);
  61. }
  62. }