CouponAutoSendForm.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  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\Coupon;
  9. use app\models\CouponAutoSend;
  10. use yii\base\Model;
  11. class CouponAutoSendForm extends Model
  12. {
  13. public $id;
  14. public $store_id;
  15. public $coupon_id;
  16. public $event;
  17. public $ext_type;
  18. public $send_times;
  19. public $is_delete;
  20. public $mch_id;
  21. public $amount;
  22. public $day_num;
  23. public $day_count;
  24. public $money;
  25. //搜索
  26. public $search_key;
  27. public $search_is_show;
  28. const SCENARIO_ADD = 'add';
  29. const SCENARIO_EDIT = 'edit';
  30. const SCENARIO_DEL = 'del';
  31. const SCENARIO_LIST = 'list';
  32. const EVENT_TEXT = [
  33. CouponAutoSend::EVENT_SHARE => "页面转发",
  34. CouponAutoSend::EVENT_PAY => "购买并付款",
  35. CouponAutoSend::EVENT_RECHARGE => "充值赠送",
  36. CouponAutoSend::EVENT_QRCODE => "二维码领取",
  37. CouponAutoSend::EVENT_NEWUSER => "新人专享",
  38. CouponAutoSend::EVENT_ORDER => "下单赠送",
  39. ];
  40. const EXT_TEXT = [
  41. CouponAutoSend::EXT_REG => "首次登录",
  42. CouponAutoSend::EXT_FIRST_ORDER => "完成首单",
  43. CouponAutoSend::EXT_SECOND_ORDER => "完成次单",
  44. ];
  45. /**
  46. * {@inheritdoc}
  47. */
  48. public function rules()
  49. {
  50. return [
  51. [['store_id', 'event', 'ext_type', 'send_times', 'is_delete', 'mch_id', 'day_num', 'day_count'], 'integer'],
  52. [['amount', 'money'], 'number'],
  53. [['coupon_id'],'string'],
  54. ['is_delete', 'default', 'value'=> CouponAutoSend::IS_DELETE_NO],
  55. [['coupon_id', 'event', 'send_times'],'required', 'on'=> [self::SCENARIO_ADD, self::SCENARIO_EDIT]],
  56. [['id'],'required', 'on'=> [self::SCENARIO_DEL, self::SCENARIO_EDIT]],
  57. ['id', 'string', 'on' => self::SCENARIO_DEL],
  58. ['search_key', 'string', 'on' => self::SCENARIO_LIST]
  59. ];
  60. }
  61. /**
  62. * {@inheritdoc}
  63. */
  64. public function attributeLabels()
  65. {
  66. return [
  67. 'id' => 'Id',
  68. 'store_id' => '商城',
  69. 'coupon_id' => '优惠券id',
  70. 'event' => '触发事件:1=分享,2=购买并付款',
  71. 'ext_type' => '附加条款',
  72. 'send_times' => '最多发放次数,0表示不限制',
  73. 'is_delete' => '是否删除',
  74. 'mch_id' => '入驻商id',
  75. 'updated_at' => '更新时间',
  76. 'amount' => '现金',
  77. 'day_num' => '单人单日获取数量',
  78. 'day_count' => '单人总获取量',
  79. 'money' => '需要现金',
  80. ];
  81. }
  82. public function scenarios()
  83. {
  84. $scenarios = parent::scenarios();
  85. return $scenarios;
  86. }
  87. public function saveCouponAutoSend()
  88. {
  89. if ($this->validate()) {
  90. $t = \Yii::$app->db->beginTransaction();
  91. if ($this->scenario == self::SCENARIO_EDIT) {
  92. $model = CouponAutoSend::findOne(['id' => $this->id]);
  93. } else {
  94. $model = new CouponAutoSend();
  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 searchCouponAutoSend()
  118. {
  119. $query = CouponAutoSend::find()->alias('a')
  120. ->leftJoin(['c' => Coupon::tableName()], 'c.id=a.coupon_id');
  121. $query->where(['a.is_delete' => CouponAutoSend::IS_DELETE_NO, 'a.store_id' => $this->store_id])->orderBy("a.id desc");
  122. // 搜索
  123. if ($this->search_key) {
  124. $query->andWhere(['like', 'c.name', $this->search_key]);
  125. }
  126. // 发放规则
  127. if ($this->event) {
  128. $query->andWhere(['a.event' => $this->event]);
  129. }
  130. $query->select('a.*, c.name coupon_name');
  131. $list = pagination_make($query);
  132. foreach ($list['list'] as &$val) {
  133. $coupon_ids = json_decode($val['coupon_id'], true);
  134. $val['coupon'] = Coupon::find()->where(['id' => $coupon_ids])->select('name')->column();
  135. $val['created_at'] = date('Y-m-d H:i:s', $val['created_at']);
  136. $val['updated_at'] = date('Y-m-d H:i:s', $val['updated_at']);
  137. $val['event_text'] = self::EVENT_TEXT[$val['event']];
  138. $val['ext_text'] = self::EXT_TEXT[$val['ext_type']];
  139. }
  140. $type_list = CouponForm::getCouponList();
  141. return [
  142. 'code' => 0,
  143. 'msg' => 'success',
  144. 'data' => [
  145. 'data' => $list['list'],
  146. 'type_list' => $type_list,
  147. 'pageNo' => $list['pageNo'],
  148. 'totalCount' => $list['totalCount']
  149. ]
  150. ];
  151. }
  152. public function delCouponAutoSend()
  153. {
  154. if ($this->validate()) {
  155. $t = \Yii::$app->db->beginTransaction();
  156. if ($this->scenario !== self::SCENARIO_DEL) {
  157. return [
  158. 'code' => 1,
  159. 'msg' => '删除失败'
  160. ];
  161. }
  162. $model = CouponAutoSend::findOne(['id' => $this->id]);
  163. $model->is_delete = CouponAutoSend::IS_DELETE_YES;
  164. if (!$model || !$model->save()) {
  165. $t->rollBack();
  166. return [
  167. 'code' => 1,
  168. 'msg' => $model->getErrorSummary(false)[0]
  169. ];
  170. }
  171. $t->commit();
  172. return [
  173. 'code' => 0,
  174. 'msg' => '删除成功'
  175. ];
  176. // 所有输入数据都有效 all inputs are valid
  177. } else {
  178. // 验证失败:$errors 是一个包含错误信息的数组
  179. return [
  180. 'code' => 1,
  181. "msg" => $this->getErrorSummary(false)[0]
  182. ];
  183. }
  184. }
  185. public static function getCouponAutoSendList(){
  186. return CouponAutoSend::find()->where(['is_delete' => CouponAutoSend::IS_DELETE_NO])->orderBy(['id desc'])->select('*')->asArray()->all();
  187. }
  188. /**
  189. * 添加优惠券规则
  190. * @return \yii\web\Response
  191. */
  192. public function getCouponAutoSendAdd() {
  193. }
  194. }