VerifyCardSaleForm.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\admin\models;
  8. use app\models\VerifyCardSale;
  9. use app\models\User;
  10. use app\models\VerifyCard;
  11. use yii\base\Model;
  12. class VerifyCardSaleForm extends Model
  13. {
  14. public $id;
  15. public $store_id;
  16. public $verify_card_id;
  17. public $user_id;
  18. public $use_num;
  19. public $left_num;
  20. public $sale_time;
  21. public $end_time;
  22. public $is_delete;
  23. public $status;
  24. public $goods_id;
  25. public $order_type;
  26. public $created_at;
  27. public $updated_at;
  28. //搜索
  29. public $search_key;
  30. public $search_is_show;
  31. const SCENARIO_ADD = 'add';
  32. const SCENARIO_EDIT = 'edit';
  33. const SCENARIO_DEL = 'del';
  34. const SCENARIO_LIST = 'list';
  35. const STATUS_TEXT = [
  36. VerifyCardSale::STATUS_YES => '正常',
  37. VerifyCardSale::STATUS_EXPIRED => '已过期',
  38. VerifyCardSale::STATUS_USED => '已使用'
  39. ];
  40. const ORDER_TYPE_TEXT = [
  41. VerifyCardSale::ORDER_TYPE_STORE => '商城订单',
  42. VerifyCardSale::ORDER_TYPE_PINTUAN => '拼团订单',
  43. VerifyCardSale::ORDER_TYPE_MIAOSHA => '秒杀订单'
  44. ];
  45. /**
  46. * {@inheritdoc}
  47. */
  48. public function rules()
  49. {
  50. return [
  51. [['store_id', 'verify_card_id', 'user_id', 'use_num', 'left_num', 'sale_time', 'end_time', 'is_delete', 'status', 'goods_id', 'order_type'], 'integer'],
  52. ['is_delete', 'default', 'value'=> VerifyCardSale::IS_DELETE_NO],
  53. ['status', 'default', 'value'=> VerifyCardSale::STATUS_YES],
  54. [['verify_card_id', 'user_id', 'goods_id', 'order_type', 'left_num'],'required', 'on'=> [self::SCENARIO_ADD, self::SCENARIO_EDIT]],
  55. [['id'],'required', 'on'=> [self::SCENARIO_DEL, self::SCENARIO_EDIT]],
  56. ['search_key', 'string', 'on' => self::SCENARIO_LIST]
  57. ];
  58. }
  59. /**
  60. * {@inheritdoc}
  61. */
  62. public function attributeLabels()
  63. {
  64. return [
  65. 'id' => 'ID',
  66. 'store_id' => 'Store ID',
  67. 'verify_card_id' => '核销卡id',
  68. 'user_id' => '用户id',
  69. 'use_num' => '核销次数',
  70. 'left_num' => '剩余次数',
  71. 'sale_time' => '售卖时间',
  72. 'end_time' => '有效期',
  73. 'is_delete' => '状态',
  74. 'status' => '状态',
  75. 'goods_id' => '商品id',
  76. 'order_type' => '订单类型',
  77. 'created_at' => '添加时间',
  78. 'updated_at' => '更新时间',
  79. 'card_info' => '卡密信息',
  80. ];
  81. }
  82. public function scenarios()
  83. {
  84. $scenarios = parent::scenarios();
  85. return $scenarios;
  86. }
  87. public function saveVerifyCardSale()
  88. {
  89. if ($this->validate()) {
  90. $t = \Yii::$app->db->beginTransaction();
  91. if ($this->scenario == self::SCENARIO_EDIT) {
  92. $model = VerifyCardSale::findOne(['id' => $this->id]);
  93. } else {
  94. $model = new VerifyCardSale();
  95. }
  96. $model->attributes = $this->attributes;
  97. if (!$model->save()) {
  98. $t->rollBack();
  99. return [
  100. 'code' => 1,
  101. 'msg' => $model->getErrorSummary(false)[0]
  102. ];
  103. }
  104. $t->commit();
  105. return [
  106. 'code' => 0,
  107. 'msg' => '保存成功'
  108. ];
  109. } else {
  110. // 验证失败:$errors 是一个包含错误信息的数组
  111. return [
  112. 'code' => 1,
  113. "msg" => $this->getErrorSummary(false)[0]
  114. ];
  115. }
  116. }
  117. public function searchVerifyCardSale()
  118. {
  119. $query = VerifyCardSale::find()
  120. ->alias('s')
  121. ->leftJoin(['u'=> User::tableName()], 'u.id=s.user_id')
  122. ->leftJoin(['v'=> VerifyCard::tableName()], 'v.id=s.verify_card_id')
  123. ->select('s.*, u.nickname user_name, v.name verify_card_name');
  124. $query->where(['s.is_delete' => VerifyCardSale::IS_DELETE_NO, 's.store_id' => $this->store_id])->orderBy("s.id desc");
  125. // 搜索
  126. if ($this->search_key) {
  127. $query->andWhere(['like', 'name', $this->search_key]);
  128. }
  129. $list = pagination_make($query);
  130. foreach ($list['list'] as &$val) {
  131. $val['created_at'] = date('Y-m-d H:i:s', $val['created_at']);
  132. $val['order_type_text'] = self::ORDER_TYPE_TEXT[$val['order_type']];
  133. $val['status_text'] = self::STATUS_TEXT[$val['status']];
  134. }
  135. return [
  136. 'code' => 0,
  137. 'msg' => 'success',
  138. 'data' => [
  139. 'data' => $list['list'],
  140. 'pageNo' => $list['pageNo'],
  141. 'totalCount' => $list['totalCount']
  142. ]
  143. ];
  144. }
  145. public function delVerifyCardSale()
  146. {
  147. if ($this->validate()) {
  148. $t = \Yii::$app->db->beginTransaction();
  149. if ($this->scenario !== self::SCENARIO_DEL) {
  150. return [
  151. 'code' => 1,
  152. 'msg' => '删除失败'
  153. ];
  154. }
  155. $model = VerifyCardSale::findOne(['id' => $this->id]);
  156. $model->is_delete = VerifyCardSale::IS_DELETE_YES;
  157. if (!$model || !$model->save()) {
  158. $t->rollBack();
  159. return [
  160. 'code' => 1,
  161. 'msg' => $model->getErrorSummary(false)[0]
  162. ];
  163. }
  164. $t->commit();
  165. return [
  166. 'code' => 0,
  167. 'msg' => '删除成功'
  168. ];
  169. // 所有输入数据都有效 all inputs are valid
  170. } else {
  171. // 验证失败:$errors 是一个包含错误信息的数组
  172. return [
  173. 'code' => 1,
  174. "msg" => $this->getErrorSummary(false)[0]
  175. ];
  176. }
  177. }
  178. public static function getVerifyCardSaleList()
  179. {
  180. return VerifyCardSale::find()->where(['is_delete' => VerifyCardSale::IS_DELETE_NO])->orderBy(['sort desc, id desc'])->select('*')->asArray()->all();
  181. }
  182. }