| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- /**
- * MaterialForm.php
- * todo 文件描述
- * Created on 2025/1/13 上午11:17
- * @author: hankaige
- */
- namespace app\modules\client\models\v1;
- use app\models\Goods;
- use app\models\material\Material;
- use app\models\material\MaterialCategory;
- use app\models\material\MaterialBrowsing;
- use app\models\material\MaterialResource;
- use yii\helpers\ArrayHelper;
- class MaterialForm extends \yii\base\Model
- {
- public int $store_id;
- public string $promotion = '';
- public int $material_category_id = -1;
- public int $id;
- public function rules(){
- return [
- ['promotion','string'],
- ['material_category_id','integer']
- ];
- }
- public function getMaterialCategory():array
- {
- $list = MaterialCategory::find()->where(['store_id'=>$this->store_id])
- ->andWhere(['OR', ['delete_time' => 0], ['IS', 'delete_time', NULL]])->asArray()->select(['id','name','sort'])->orderBy('sort ASC, id DESC')->all();
- array_unshift($list,['id'=>-1,'name'=>'全部','sort' => 0]);
- return ['code' => 0, 'data' => $list];
- }
- public function getMaterialList():array
- {
- $query = Material::find()->with(['materialResource','goods'])->alias('m')->where(['m.store_id'=>$this->store_id,'m.status' => Material::STATUS_ON])->andWhere(['OR', ['m.delete_time' => 0], ['IS', 'm.delete_time', NULL]])->orderBy('is_top DESC,sort ASC,create_time DESC');
- if($this->material_category_id != -1){
- $query->andWhere(['m.material_category_id'=>$this->material_category_id]);
- }
- if(!empty($this->promotion)){
- $query->andWhere(['like','m.promotion',$this->promotion]);
- }
- $result = pagination_make($query);
- foreach($result['list'] as &$item){
- $item['resource_model_text'] = Material::RESOURCE_MODEL_TEXT[$item['resource_model']];
- }
- return ['code' => 0,'data' => $result,'msg' => '获取数据成功'];
- }
- public function getMaterialItem():array
- {
- $model = Material::find()->alias('m')->where(['m.store_id'=>$this->store_id,'m.id'=>$this->id])->andWhere(['OR', ['m.delete_time' => 0], ['IS', 'm.delete_time', NULL]])->with(['materialResource','goods'])->one();
- if(!$model){
- return ['code' => 1,'msg' => '数据不存在'];
- }
- $model->browsing_number = $model->browsing_number + 1;
- $model->save();
- $model = ArrayHelper::toArray($model);
- $model['materialResource'] = MaterialResource::find()->where(['material_id'=>$model['id']])->asArray()->all();
- $model['goods'] = Goods::find()->where(['id' => $model['goods_id']])->select('id,name,cover_pic,price')->one();
- $model['resource_model_text'] = Material::RESOURCE_MODEL_TEXT[$model['resource_model']];
- $model['download_number'] = $model['download_number'] > 10000 ? bcmul($model['download_number'] / 10000,1,2).'万' : $model['download_number'];
- // 生成浏览记录 并浏览量+1
- return ['code' => 0,'data' => $model,'msg' => '获取数据成功'];
- }
- public function getDownloadStatistics(){
- $model = Material::findOne($this->id);
- $model->download_number += 1;
- $model->save();
- $downloadNumber = $model->download_number > 10000 ? bcmul($model->download_number / 10000,1,2).'万' : $model->download_number;
- return ['code' => 0,'msg' => '记录成功','data' => (string)$downloadNumber];
- }
- }
|