| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <?php
- /**
- * IndexFrom.php
- * todo 文件描述
- * Created on 2024/12/3 上午11:14
- * @author: hankaige
- */
- namespace app\modules\client\models\v1\cashier;
- use app\models\CashierUserExt;
- use app\models\Goods;
- use app\models\MdGoods;
- use app\models\Order;
- use yii\base\Model;
- class IndexForm extends Model
- {
- public $store_id;
- public $md_id;
- public $goods_code;
- public function rules(): array
- {
- return [
- [['store_id','md_id'], 'integer'],
- ['goods_code', 'string'],
- ];
- }
- public function attributeLabels(): array
- {
- return [
- 'store_id' => '商城ID',
- 'md_id' => '门店ID',
- 'goods_code' => '商品条码'
- ];
- }
- public function indexData(): array
- {
- // 获取昨天零点的时间戳
- $yesterday = strtotime(date('Y-m-d', strtotime('-1 day')));
- // 获取今天零点的时间戳
- $today = strtotime(date('Y-m-d'));
- $tomorrow = strtotime('+1 Day', $today);
- $md_id = $this->md_id;
- if ($md_id <= 0) {
- $md_id = [0, -1];
- $this->md_id = 0;
- }
- $user = get_user();
- $query = Order::find()->where(['store_id' => $this->store_id, 'md_id' => $md_id])->andWhere(['!=', 'trade_status', 1])
- ->andWhere(['or', ['is_pay' => 1], ['pay_type' => \app\models\Order::PAY_TYPE_COD]]);
- $today_query = (clone $query)->andWhere(['between', 'created_at', $today, $tomorrow]);
- $data['order_price'] = (clone $today_query)->sum('total_price') ?? 0;
- $data['yesterday_order_price'] = (clone $query)->andWhere(['between', 'created_at', $yesterday, $today])->sum('total_price') ?? 0;
- $data['pay_price'] = (clone $today_query)->sum('pay_price') ?? 0;
- $data['yesterday_pay_price'] = (clone $query)->andWhere(['between', 'created_at', $yesterday, $today])->sum('pay_price') ?? 0;
- $data['order_count'] = (clone $today_query)->count() ?? 0;
- $data['yesterday_order_count'] = (clone $query)->andWhere(['between', 'created_at', $yesterday, $today])->count() ?? 0;
- $data['discount_amount'] = bcsub($data['order_price'], $data['pay_price'], 2);
- $data['yesterday_discount_amount'] = bcsub($data['yesterday_order_price'], $data['yesterday_pay_price'], 2);
- $data['md_id'] = $this->md_id;
- $data['cashier_data_auth'] = intval($user->cashier_data_auth);
- // 如果md>0的时候 要给查询一下有没有余额和积分的权限
- if($md_id > 0){
- $cashierUserExt = CashierUserExt::find()->where(['user_id' => $user->id, 'md_id' => $md_id,'is_delete' => 0])->one();
- $data['balance'] = $cashierUserExt->balance ?? 0;
- $data['integral'] = $cashierUserExt->integral ?? 0;
- }else{
- $data['balance'] = 1;
- $data['integral'] = 1;
- }
- return ['code' => 0, 'msg' => '请求成功', 'data' => $data];
- }
- public function getGoods(): array
- {
- if (empty($this->goods_code)) {
- return ['code' => 1, 'msg' => '商品条码信息不能为空'];
- }
- $fields = 'g.id as goods_id, g.name,g.attr,g.cover_pic,g.cost_price';
- $query = Goods::find()->alias('g')->where(['g.store_id' => $this->store_id, 'g.type' => Goods::GOODS_TYPE_NORMAL, 'g.status' => Goods::STATUS_NORMAL, 'g.is_delete' => 0]);
- if ($this->md_id > 0) {
- $query->andWhere(['g.id' => MdGoods::find()->where(['md_id' => $this->md_id, 'status' => 1])->select('goods_id')]);
- $query->leftJoin(['mg' => MdGoods::tableName()], 'g.id = mg.goods_id')->andWhere(['mg.md_id' => $this->md_id]);
- $fields = 'g.id as goods_id, g.name,mg.attr,g.cover_pic,g.cost_price';
- }
- $goods = $query->andWhere(['or', ['g.goods_no' => $this->goods_code], ['LIKE', "JSON_UNQUOTE(JSON_EXTRACT(g.attr, '$[*].no'))", $this->goods_code]])->select($fields)->asArray()->one();
- if (empty($goods)) {
- return ['code' => 1, 'msg' => '商品不存在'];
- }
- $attr = json_decode($goods['attr'], TRUE);
- foreach ($attr as $attr_item) {
- if ($attr_item['no'] === $this->goods_code) {
- $goods['attr_list'] = $attr_item['attr_list'];
- $goods['pic'] = !empty($attr_item['pic']) ? $attr_item['pic'] : $goods['cover_pic'];
- $goods['price'] = $goods['new_price'] = $attr_item['price'];
- $goods['goods_num'] = $attr_item['num'];
- }
- }
- $goods['num'] = 1;
- return ['code' => 0, 'msg' => '请求成功', 'data' => ['goods' => $goods]];
- }
- }
|