| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\admin\models\adopt;
- use app\librarys\YsOpen\YsClient;
- use app\plugins\adopt\models\AdoptSetting;
- use app\plugins\adopt\models\Monitor;
- use app\constants\OptionSetting;
- use app\models\Attr;
- use app\models\AttrGroup;
- use app\models\Form;
- use app\models\Goods;
- use app\models\GoodsBook;
- use app\models\GoodsCat;
- use app\models\GoodsPic;
- use app\models\Level;
- use app\models\Option;
- use app\models\PostageRules;
- use app\models\VerifyCard;
- use app\plugins\adopt\models\AdoptGoods;
- use yii\base\Model;
- use yii\helpers\Json;
- use app\jobs\SyncMdGoodsJob;
- use app\utils\Tools;
- class DeviceForm extends Model
- {
- public $store_id;
- public $status;
- /**
- * 初始化
- */
- public function init()
- {
- $this->store_id = get_store_id();
- }
- /**
- * @return array
- */
- public function rules()
- {
- return [
- [['status'], 'integer'],
- ];
- }
- public function attributeLabels()
- {
- return [
- 'status' => '设备状态',
- ];
- }
- /**
- * @param array $arr | status 状态 name 名称 cat_id 分类id mch_id 入驻商 is_verify 审核 select 查询数据
- * @return array
- */
- public static function getList ($arr = [])
- {
- $query = Monitor::find()
- ->where(['store_id' => get_store_id()]);
- if (isset($arr['status']) && $arr['status'] > -1) {
- $query->andWhere([
- 'status' => $arr['status']
- ]);
- }
- $query->orderBy(['created_at' => SORT_ASC, 'id' => SORT_DESC]);
- $pagination = pagination_make($query);
- $pagination['data'] = $pagination['list'];
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => $pagination
- ];
- }
- /**
- * 绑定设备
- * @param $arr
- * @return array
- */
- public static function addItem($arr = []){
- if($arr['id']){
- $model = Monitor::findOne($arr['id']);
- }else{
- $model = new Monitor();
- }
- $model->store_id = get_store_id();
- $model->name = $arr['name'];
- $model->serial = $arr['serial'];
- $model->code = $arr['code'];
- $model->cover_pic = $arr['cover_pic'];
- $model->status = 1;
- $t = \Yii::$app->db->beginTransaction();
- try {
- if(!$model->save()){
- $t->rollBack();
- return ['code'=>1,'msg'=>$model->getErrors()];
- }
- if($arr['id'] <= 0){
- // 获取萤石配置
- $setting = AdoptSetting::findOne(['store_id'=>get_store_id()]);
- if(!$setting->ys_app_key || !$setting->ys_secret){
- $t->rollBack();
- return ['code'=>1,'msg'=>'未设置萤石信息'];
- }
- $ysOpen = new YsClient($setting->ys_app_key,$setting->ys_secret);
- $getAccessTokenResult = $ysOpen->getAccessToken();
- if(false == $getAccessTokenResult){
- $t->rollBack();
- return ['code'=>1,'msg'=>"萤石账号有误"];
- }
- $addResult = $ysOpen->addDeviceItem($arr['serial'],$arr['code']);
- if($addResult['code'] != 200){
- $t->rollBack();
- return ['code'=>1,'msg'=>$addResult['msg']];
- }
- }
- $t->commit();
- return [
- 'code' => 0,
- 'msg' => 'success',
- ];
- }catch (\Exception $e){
- $t->rollBack();
- return ['code'=>1,'msg'=>$e->getMessage()];
- }
- }
- /**
- * 解除绑定
- * @param $arr
- * @return array
- * @throws \Throwable
- */
- public static function delItem($arr = []){
- $model = Monitor::findOne($arr['device_id']);
- if(!$model){
- return ['code'=>1,'msg'=>'设备不存在,请先刷新设备列表'];
- }
- $t = \Yii::$app->db->beginTransaction();
- try {
- // 获取萤石配置
- $setting = AdoptSetting::findOne(['store_id'=>get_store_id()]);
- if(!$setting->ys_app_key || !$setting->ys_secret){
- $t->rollBack();
- return ['code'=>1,'msg'=>'未设置萤石信息'];
- }
- $ysOpen = new YsClient($setting->ys_app_key,$setting->ys_secret);
- $getAccessTokenResult = $ysOpen->getAccessToken();
- if(false == $getAccessTokenResult){
- $t->rollBack();
- return ['code'=>1,'msg'=>"萤石账号有误"];
- }
- $delResult = $ysOpen->delDeviceItem($model->serial);
- if($delResult['code'] != 200){
- $t->rollBack();
- return ['code'=>1,'msg'=>$delResult['msg']];
- }
- if(!$model->delete()){
- $t->rollBack();
- return ['code'=>1,'msg'=>"删除设备失败"];
- }
- $t->commit();
- return ['code'=>0,'msg'=> '删除设备成功'];
- }catch (\Exception $e){
- $t->rollBack();
- return ['code'=>1,'msg'=>$e->getMessage()];
- }
- }
- /**
- * 刷新设备列表
- * @return array|void
- */
- public static function refresh(){
- // 获取萤石配置
- $setting = AdoptSetting::findOne(['store_id'=>get_store_id()]);
- if(!$setting->ys_app_key || !$setting->ys_secret){
- return ['code'=>1,'msg'=>'未设置萤石信息'];
- }
- $ysOpen = new YsClient($setting->ys_app_key,$setting->ys_secret);
- $getAccessTokenResult = $ysOpen->getAccessToken();
- if(false == $getAccessTokenResult){
- return ['code'=>1,'msg'=>"萤石账号有误"];
- }
- $result = $ysOpen->getDeviceList();
- if($result['code'] != 200){
- return ['code'=>1,'msg'=>$result['msg'],'resultCode'=>$result['code']];
- }
- foreach($result['data'] as $item){
- // 根据设备序列号查询设备是否存在
- $deviceItem = Monitor::findOne(['serial'=>$item['deviceSerial']]);
- if($deviceItem){
- // 更新一下状态
- $deviceItem->status = $item['status'];
- }else{
- // 写入一条
- $deviceItem = new Monitor();
- $deviceItem->store_id = get_store_id();
- $deviceItem->name = $item['deviceName'];
- $deviceItem->serial = $item['deviceSerial'];
- $deviceItem->status = $item['status'];
- $deviceItem->created_at = bcdiv($item['addTime'],1000,0);
- }
- if(!$deviceItem->save()){
- }
- }
- return ['code'=>0,'msg'=>'更新成功'];
- }
- /**
- * 获取设备选择列表
- * @return array
- */
- public static function getSelectList(){
- $list = Monitor::find()->where([
- 'store_id' => get_store_id()
- ])->select('id,name')->all();
- return ['code'=>0,'data'=>$list];
- }
- }
|