| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <?php
- namespace common\models\statistics;
- use common\enums\StatusEnum;
- use common\models\mall\Mall;
- use common\models\order\Order;
- use common\models\user\User;
- use Exception;
- use Yii;
- /**
- * This is the model class for table "{{%user_statistics_total}}".
- *
- *
- * @property int $id ID
- * @property int $mall_id 商城ID
- * @property int $user_id 用户ID
- * @property int $order_num 下单数
- * @property float $order_money 下单金额,单元:元
- * @property int $pay_num 支付订单数
- * @property float $pay_money 支付金额,单位:元
- * @property int $pay_goods_num 支付商品件数
- * @property int $average_money 客单价(订单总额/订单总数)
- * @property int $finish_order_num 已完成订单数
- * @property float $finish_order_money 已完成订单金额,单位:元
- * @property int $refund_order_num 退款订单数
- * @property float $refund_order_money 退款订单金额
- * @property float $recharge_money 充值金额,单位:元
- * @property float $original_order_money 已支付订单优惠前金额,单位:元
- * @property int $cancel_order_num 已取消订单数
- * @property float $balance_pay 余额支付金额,单位:元
- * @property float $wechat_pay 微信支付金额,单位:元
- * @property float $ali_pay 支付宝支付金额,单元:元
- * @property float $pay_selling_price 已支付的订单售价总额(商品价格)
- * @property float $finish_selling_price 已完成的订单售价总额(商品价格)
- * @property float $user_goods_price_total 支付金额不包含运费
- * @property int $user_order_num 订单总数
- * @property int $status 状态【1启用 0禁用 -1删除】
- * @property int $created_at 创建时间
- * @property int $updated_at 更新数据时间
- * @property int $share_nums 分享次数
- * @property int $visit_nums 访问次数
- */
- class UserStatisticsTotal extends \common\models\base\BaseActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%user_statistics_total}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['mall_id', 'user_id', 'order_num', 'pay_num', 'pay_goods_num', 'finish_order_num', 'refund_order_num', 'cancel_order_num', 'status', 'created_at', 'updated_at', 'finish_goods_num', 'cancel_goods_num', 'refund_goods_num','share_nums','visit_nums'], 'integer'],
- [['order_money', 'pay_money', 'average_money','finish_order_money', 'refund_order_money', 'recharge_money', 'original_order_money', 'balance_pay', 'wechat_pay', 'ali_pay', 'cancel_order_money',
- 'pay_selling_price', 'finish_selling_price'], 'number'],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => 'ID',
- 'mall_id' => '商城ID',
- 'user_id' => '用户ID',
- 'order_num' => '下单数',
- 'order_money' => '下单金额,单元:元',
- 'pay_num' => '支付订单数',
- 'pay_money' => '支付金额,单位:元',
- 'pay_goods_num' => '支付商品件数',
- 'average_money' => '客单价(订单总额/订单总数)',
- 'finish_order_num' => '已完成订单数',
- 'finish_order_money' => '已完成订单金额,单位:元',
- 'finish_goods_num' => '已完成商品数',
- 'refund_order_num' => '退款订单数',
- 'refund_order_money' => '退款订单金额',
- 'refund_goods_num' => '退款商品数',
- 'recharge_money' => '充值金额,单位:元',
- 'original_order_money' => '已支付订单优惠前金额,单位:元',
- 'cancel_order_num' => '已取消订单数',
- 'cancel_order_money' => '已取消订单金额',
- 'cancel_goods_num' => '已取消商品数',
- 'balance_pay' => '余额支付金额,单位:元',
- 'wechat_pay' => '微信支付金额,单位:元',
- 'ali_pay' => '支付宝支付金额,单元:元',
- 'pay_selling_price' => '已支付的订单售价总额(商品价格)',
- 'finish_selling_price' => '已完成的订单售价总额(商品价格)',
- 'user_goods_price_total' => '支付金额不包含运费',
- 'user_order_num' => '订单总数',
- 'status' => '状态【1启用 0禁用 -1删除】',
- 'created_at' => '创建时间',
- 'updated_at' => '更新数据时间',
- 'share_nums' => '分享次数',
- 'visit_nums' => '访问次数',
- ];
- }
- /**
- * 数据保存
- * @Author: lun
- * @DateTime: 2021/11/25 0025 18:45
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $mall_id
- * @param $user_id
- * @param $data
- * @return bool
- */
- public static function setUserStatisticsTotal($mall_id, $user_id, $data) {
- try {
- $orderMdl = self::find()->where(['mall_id' => $mall_id, 'user_id' => $user_id])->one();
- if (empty($orderMdl)) {
- $orderMdl = new self();
- $orderMdl->mall_id = $mall_id;
- $orderMdl->user_id = $user_id;
- }
- // 循环赋值
- foreach ($orderMdl as $key => $value) {
- if (isset($data[$key]) && !empty($data[$key])) $orderMdl->$key += $data[$key];
- }
- // 客单价处理
- !empty($data['pay_money']) && $orderMdl->average_money = bcdiv($orderMdl->pay_money, $orderMdl->pay_num, 2);
- if (!$orderMdl->save()) {
- self::$static_error = $orderMdl->getErrorMessage();
- return false;
- }
- return true;
- } catch (\Exception $e) {
- self::$static_error = $e->getMessage();
- $logsMsg = '统计 setUserStatisticsTotal 报错,'. "mall_id:". $mall_id. " ,user_id:". $user_id .",".$e->getMessage();
- Yii::$app->custom->logs($logsMsg);
- return false;
- }
- }
- public function getUser()
- {
- return $this->hasOne(User::class, ['id' => 'user_id'])->select('id, nickname, avatar_url, mobile');
- }
- //累计历史售后完成订单数据
- public static function cumulativeOrderFinish()
- {
- try {
- $type = $params['type'] ?? 0;
- //获取商城id
- $mall_list = Mall::getEnableMallList(true);
- if(!empty($mall_list)){
- foreach ($mall_list as $mall){
- // var_dump('商城:'. $mall['id']);
- self::refundOrderFinishData(['mall_id' => $mall['id']]);
- }
- }
- return true;
- } catch (\Exception $e) {
- throw new Exception();
- }
- }
- public static function refundOrderFinishData($params)
- {
- try {
- //获取售后完成订单
- $order_list = Order::lists([
- 'where' => [
- ['mall_id' => $params['mall_id']],
- ['order_status' => -4],
- ['is_feedback' => 2],
- ],
- ]);
- if (empty($order_list)) return true;
- foreach ($order_list as $key => $value) {
- //获取用户统计数据
- $user_statistics = UserStatisticsTotal::getOne([
- ['mall_id' => $params['mall_id']],
- ['user_id' => $value['user_id']],
- ['status' => StatusEnum::ENABLED],
- ]);
- $user_statistics->refund_finish_order_num += 1;
- $user_statistics->refund_finish_order_money += $value['pay_money'];
- if (!$user_statistics->save()) var_dump('记录历史售后订单数据失败:user_id:'.$value['user_id'].',order_id:'.$value['id']);
- }
- return true;
- } catch (\Exception $e) {
- throw new Exception($e->getMessage());
- }
- }
- }
|