StatRefundMonthClass.php 2.3 KB

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