DecPackageForm.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. namespace common\models\forms;
  3. use backendApi\modules\v1\models\Admin;
  4. use common\components\Model;
  5. use common\helpers\Date;
  6. use common\helpers\LoggerTool;
  7. use common\models\DeclarationPackage;
  8. use yii\base\Exception;
  9. /**
  10. * Login form
  11. */
  12. class DecPackageForm extends Model
  13. {
  14. public $selectedIds;
  15. public $id;
  16. public $packageName;
  17. public $packageNo;
  18. public $amount;
  19. public $amountPv;
  20. public $levelId;
  21. public $packageContent;
  22. public $status;
  23. public $storenums;
  24. public $statusdate;
  25. public $packagedate;
  26. public $packagestatusdate;
  27. public $sort;
  28. /**
  29. * @inheritdoc
  30. */
  31. public function rules()
  32. {
  33. return [
  34. [['id', 'packageName','packageNo', 'amount', 'amountPv', 'levelId','packageContent','status'], 'trim'],
  35. [['packageName','packageNo', 'amount', 'amountPv', 'levelId','packageContent','status'], 'required'],
  36. [['id'], 'required', 'on'=>'edit'],
  37. [['id'], 'exist', 'targetClass'=>DeclarationPackage::class, 'targetAttribute'=>'ID'],
  38. [['amount','amountPv'], 'price'],
  39. [['selectedIds'], 'isSelected'],
  40. [['storenums'],'number'],
  41. [['statusdate'],'match','pattern'=>'/^[0-1]{1,1}$/']
  42. ];
  43. }
  44. public function attributeLabels()
  45. {
  46. return [
  47. 'selectedIds' => '套餐IDs',
  48. 'id' => '套餐ID',
  49. 'packageName' => '套餐名称',
  50. 'packageNo' => '套餐编号',
  51. 'amount' => '套餐金额',
  52. 'amountPv' => '套餐PV',
  53. 'levelId' => '所属报单级别',
  54. 'packageContent' => '套餐详情',
  55. 'storenums' => '套餐库存',
  56. 'sort' => '排序',
  57. ];
  58. }
  59. /**
  60. * 指定场景
  61. * @return array
  62. */
  63. public function scenarios()
  64. {
  65. $parentScenarios = parent::scenarios();
  66. $customScenarios = [
  67. 'add' => ['packageName','packageNo','amount','amountPv','levelId', 'packageContent','storenums','sort'],
  68. 'edit' => ['id','packageName','packageNo','amount','amountPv', 'levelId', 'packageContent','storenums','statusdate','packagedate','packagestatusdate','sort'],
  69. 'changeStatus' => ['selectedIds', 'status'],
  70. ];
  71. return array_merge($parentScenarios, $customScenarios);
  72. }
  73. /**
  74. * 批量数据
  75. * @param $attributes
  76. */
  77. public function isSelected($attributes) {
  78. if (!$this->selectedIds) {
  79. $this->addError($attributes, '必须选择一条数据');
  80. }
  81. if (!is_array($this->selectedIds)) {
  82. $this->selectedIds = [$this->selectedIds];
  83. }
  84. }
  85. /**
  86. * 编辑
  87. * @return DeclarationPackage|null|static
  88. */
  89. public function edit(){
  90. if(!$this->validate()){
  91. return null;
  92. }
  93. $model = null;
  94. try {
  95. if($this->scenario == 'add'){
  96. $model = new DeclarationPackage();
  97. $model->CREATE_ADMIN = Admin::getAdminNameById(\Yii::$app->user->id);
  98. $model->CREATED_AT = Date::nowTime();
  99. } elseif($this->scenario == 'edit') {
  100. $model = DeclarationPackage::findOne(['ID'=>$this->id]);
  101. $model->UPDATE_ADMIN = Admin::getAdminNameById(\Yii::$app->user->id);
  102. $model->UPDATED_AT = Date::nowTime();
  103. $model->STATUS_DATE = $this->statusdate;
  104. $model->PACKAGE_STATUS_DATE = $this->packagestatusdate;
  105. $model->PACKAGE_DATE = $this->packagedate / 1000;
  106. } else {
  107. $this->addError('id', '提交场景不存在');
  108. return null;
  109. }
  110. $model->PACKAGE_NAME = $this->packageName;
  111. $model->PACKAGE_NO = $this->packageNo;
  112. $model->AMOUNT = $this->amount;
  113. $model->PV = $this->amountPv;
  114. $model->LEVEL_ID = $this->levelId;
  115. $model->CATE_ID = 1;
  116. $model->PACKAGE_CONTENT = $this->packageContent;
  117. $model->STORE_NUMS = $this->storenums;
  118. $model->SORT = $this->sort;
  119. $model->save();
  120. return $model;
  121. } catch (\Exception $e) {
  122. LoggerTool::error(sprintf('DecPackageFormError:%s, %s, %s', $e->getMessage(), $e->getLine(), $e->getFile()));
  123. $this->addErrors($model->getErrors());
  124. return null;
  125. }
  126. }
  127. /**
  128. * 上下架
  129. * @return null|static
  130. * @throws \yii\db\Exception
  131. */
  132. public function changeStatus() {
  133. if (!$this->validate()) {
  134. return null;
  135. }
  136. $db = \Yii::$app->db;
  137. $transaction = $db->beginTransaction();
  138. try {
  139. foreach ($this->selectedIds as $select) {
  140. $oneGoods = DeclarationPackage::findOne(['ID' => $select]);
  141. //判断状态
  142. if (($msg = DeclarationPackage::chkAuditStatus($oneGoods->STATUS, $this->status)) != '') {
  143. throw new Exception($msg);
  144. }
  145. $oneGoods->STATUS = $this->status;
  146. $oneGoods->UPDATED_AT = Date::nowTime();
  147. $oneGoods->CATE_ID = 1;
  148. if (!$oneGoods->save()) {
  149. throw new Exception(Form::formatErrorsForApi($oneGoods->getErrors()));
  150. }
  151. }
  152. $transaction->commit();
  153. } catch (Exception $e) {
  154. $transaction->rollBack();
  155. $this->addError('changeStatus', $e->getMessage());
  156. return null;
  157. }
  158. return ['status' => $this->status];
  159. }
  160. }