StoreCensus.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. namespace addons\Store\common\models;
  3. use common\enums\StatusEnum;
  4. use common\models\base\BaseActiveRecord;
  5. use common\models\mall\Mall;
  6. use common\models\order\OrderRefund;
  7. use Exception;
  8. use Yii;
  9. /**
  10. * This is the model class for table "qimall_addons_store_census".
  11. *
  12. * @property int $id
  13. * @property int $mall_id
  14. * @property int $store_id 门店id
  15. * @property int $add_user_nums 新增会员
  16. * @property int $order_nums 订单数
  17. * @property float $settlement_commission 结算佣金
  18. * @property float $sales_money 门店销售额
  19. * @property float $cashier_sales_money 收银台销售额
  20. * @property string $date_time 日期时间
  21. * @property int $status 状态[0禁用 1启用 -1删除]
  22. * @property int $created_at 创建时间
  23. * @property int $updated_at 修改时间
  24. */
  25. class StoreCensus extends BaseActiveRecord
  26. {
  27. /**
  28. * {@inheritdoc}
  29. */
  30. public static function tableName()
  31. {
  32. return '{{%addons_store_census}}';
  33. }
  34. /**
  35. * {@inheritdoc}
  36. */
  37. public function rules()
  38. {
  39. return [
  40. [['mall_id', 'store_id', 'add_user_nums', 'order_nums', 'status', 'created_at', 'updated_at', 'cashier_order_nums'], 'integer'],
  41. [['settlement_commission', 'sales_money', 'cashier_sales_money', 'order_refund_money'], 'number'],
  42. [['date_time'], 'string', 'max' => 50],
  43. ];
  44. }
  45. /**
  46. * {@inheritdoc}
  47. */
  48. public function attributeLabels()
  49. {
  50. return [
  51. 'id' => 'ID',
  52. 'mall_id' => 'Mall ID',
  53. 'store_id' => '门店id',
  54. 'add_user_nums' => '新增会员',
  55. 'order_nums' => '订单数',
  56. 'settlement_commission' => '结算佣金',
  57. 'sales_money' => '门店销售额',
  58. 'cashier_sales_money' => '收银台销售额',
  59. 'date_time' => '日期时间',
  60. 'status' => '状态[0禁用 1启用 -1删除]',
  61. 'created_at' => '创建时间',
  62. 'updated_at' => '修改时间',
  63. ];
  64. }
  65. public static function setData($params)
  66. {
  67. try {
  68. if (!empty($params['mall_id']) && !empty($params['date_time']) && !empty($params['store_id'])) {
  69. $store_census = StoreCensus::findOne(['date_time' => $params['date_time'], 'store_id' => $params['store_id'], 'mall_id' => $params['mall_id']]);
  70. if (empty($store_census)) {
  71. $store_census = new StoreCensus();
  72. $store_census->loadDefaultValues();
  73. $store_census->mall_id = $params['mall_id'];
  74. $store_census->store_id = $params['store_id'];
  75. $store_census->date_time = $params['date_time'];
  76. }
  77. if (!empty($params['cashier_order_nums'])) $store_census->cashier_order_nums += $params['cashier_order_nums'];
  78. if (!empty($params['sales_money'])) $store_census->sales_money += $params['sales_money'];
  79. if (!empty($params['order_nums'])) $store_census->order_nums += $params['order_nums'];
  80. if (!empty($params['add_user_nums'])) $store_census->add_user_nums += $params['add_user_nums'];
  81. if (!empty($params['settlement_commission'])) $store_census->settlement_commission += $params['settlement_commission'];
  82. if (!empty($params['cashier_sales_money'])) $store_census->cashier_sales_money += $params['cashier_sales_money'];
  83. $res = $store_census->save();
  84. }
  85. return true;
  86. } catch (\Exception $e) {
  87. self::$static_error = $e->getMessage();
  88. return false;
  89. }
  90. }
  91. //数据迁移-累计处理历史数据
  92. public static function historyOrderRefund()
  93. {
  94. try {
  95. //获取商城id
  96. $mall_list = Mall::getEnableMallList(true);
  97. if(!empty($mall_list)){
  98. foreach ($mall_list as $mall){
  99. // var_dump('商城:'. $mall['id']);
  100. self::grandHistoryOrderRefund(['mall_id' => $mall['id']]);
  101. }
  102. }
  103. return true;
  104. } catch (\Exception $e) {
  105. throw new Exception($e->getMessage());
  106. }
  107. }
  108. public static function grandHistoryOrderRefund($params)
  109. {
  110. try {
  111. //清零商城addons_store_census 订单累计数量和退款金额
  112. self::updateAll(['order_nums' => 0, 'order_refund_money' => 0], ['mall_id' => $params['mall_id']]);
  113. //查找商城每日统计数据
  114. $list = self::lists([
  115. 'where' => [
  116. ['mall_id' => $params['mall_id']],
  117. ['status' => StatusEnum::ENABLED],
  118. ],
  119. 'order' => 'id asc',
  120. ], false);
  121. foreach ($list as $detail) {
  122. $order_nums = 0;
  123. //查找对应日期订单
  124. $order_nums = StoreOrder::find()->where(['mall_id' => $params['mall_id'], 'store_id' => $detail['store_id'], 'pay_status' => 1])
  125. ->andWhere(['and', ['>=', 'created_at', strtotime($detail['date_time'])], ['<=', 'created_at', strtotime($detail['date_time']. ' 23:59:59')]])
  126. ->count();
  127. $order_refund_money = OrderRefund::find()->where(['mall_id' => $params['mall_id'], 'store_id' => $detail['store_id'], 'is_refund' => 1])
  128. ->andWhere(['and', ['>=', 'refund_at', strtotime($detail['date_time'])], ['<=', 'refund_at', strtotime($detail['date_time']. ' 23:59:59')]])->sum('reality_refund_price');
  129. $detail->order_nums = $order_nums ?? 0;
  130. $detail->order_refund_money = $order_refund_money ?? 0;
  131. if (!$detail->save()) var_dump('id:'.$detail['id'].'修改数据失败');
  132. }
  133. } catch (\Exception $e) {
  134. throw new Exception($e->getMessage());
  135. }
  136. }
  137. }