CloudStockStatisticService.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace addons\CloudStock\common\services;
  3. use addons\CloudStock\common\models\CloudStockStatistic;
  4. use common\models\common\CapitalLog;
  5. class CloudStockStatisticService extends BaseService
  6. {
  7. public function fix($capitalType)
  8. {
  9. CapitalLog::$capitalType = $capitalType;
  10. $where = [
  11. 'mall_id' => $this->mall_id,
  12. 'from_type' => 'CloudStock',
  13. 'capital_type' => ['equal', 'price_difference_equal']
  14. ];
  15. if ($capitalType == 'commission_frozen') {
  16. $where['status'] = 0;
  17. $settlement_status = 0;
  18. } else {
  19. $settlement_status = 1;
  20. }
  21. $list = CapitalLog::find()->where($where)->select('capital_type,sum(change_num) as change_num')
  22. ->groupBy('capital_type')->all();
  23. foreach ($list as $item) {
  24. $obj = CloudStockStatistic::findOne(['mall_id' => $this->mall_id, 'capital_type' => $item['capital_type'], 'settlement_status' => $settlement_status]);
  25. if (empty($obj)) {
  26. $obj = new CloudStockStatistic();
  27. $obj->loadDefaultValues();
  28. $obj->mall_id = $this->mall_id;
  29. }
  30. $obj->capital_type = $item['capital_type'];
  31. $obj->settlement_status = $settlement_status;
  32. $obj->money = $item['change_num'];
  33. $obj->save();
  34. }
  35. }
  36. }