CouponActivity.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. namespace app\store\model\coupon;
  3. use app\common\enum\order\DeliveryStatus as DeliveryStatusEnum;
  4. use app\common\enum\order\ReceiptStatus as ReceiptStatusEnum;
  5. use app\common\model\coupon\CouponActivity as CouponActivityModel;
  6. use app\common\model\coupon\CouponActivityAction as CouponActivityActionModel;
  7. use app\common\model\coupon\CouponActivityCoupon as CouponActivityCouponModel;
  8. use app\common\model\coupon\CouponActivityStatistics as CouponActivityStatisticsModel;
  9. /**
  10. * 裂变优惠券活动模型
  11. * @package app\store\model\coupon
  12. */
  13. class CouponActivity extends CouponActivityModel
  14. {
  15. /**
  16. * 获取列表
  17. * @param array $param 查询条件
  18. * @param int $listRows 分页数量
  19. * @return mixed
  20. * @throws \think\db\exception\DbException
  21. */
  22. public function getList(array $param = [], int $listRows = 15)
  23. {
  24. // 检索查询条件
  25. $filter = $this->getQueryFilter($param);
  26. // 执行查询
  27. $list = $this->with([])
  28. ->where($filter)
  29. ->order(['audit_status'=>'asc','create_time'=>'desc'])
  30. ->paginate($listRows);
  31. return $list;
  32. }
  33. /**
  34. * 检索查询条件
  35. * @param array $param
  36. * @return \think\db\BaseQuery
  37. */
  38. private function getQueryFilter(array $param)
  39. {
  40. // 商品列表获取条件
  41. $params = $this->setQueryDefaultValue($param, [
  42. // 'is_delete' => 0,
  43. ]);
  44. // 筛选条件
  45. $filter = [];
  46. // 活动起止时间
  47. if (!empty($params['betweenTime'])) {
  48. $times = between_date($params['betweenTime']);
  49. $filter[] = ['start_time', '>=', $times['start_date']];
  50. $filter[] = ['end_time', '<=', $times['end_date']];
  51. }
  52. // 活动名称
  53. !empty($params['name']) && $filter[] = ['name', 'like', "%{$params['name']}%"];
  54. // 审核状态 0待审核 1审核通过 2审核不通过
  55. if(isset($params['auditStatus'])&&$params['auditStatus']>-1){
  56. $filter[] = ['audit_status','=',$params['auditStatus']];
  57. }
  58. //启用状态0禁用 1启用
  59. if(isset($params['status'])&&$params['status']>-1){
  60. $filter[] = ['status','=',$params['status']];
  61. }
  62. //活动状态
  63. if(isset($params['statusText'])&&$params['statusText']>0){
  64. switch ($params['statusText']){
  65. case 1://进行中
  66. $filter[] = ['start_time','<=',date('Y-m-d H:i:s')];
  67. $filter[] = ['end_time','>=',date('Y-m-d H:i:s')];
  68. $filter[] = ['audit_status','=',1];
  69. break;
  70. case 2://未开始
  71. $filter[] = ['start_time','>',date('Y-m-d H:i:s')];
  72. break;
  73. case 3://已结束
  74. $filter[] = ['end_time','<',date('Y-m-d H:i:s')];
  75. break;
  76. }
  77. }
  78. // 实例化新查询对象
  79. return $filter;
  80. }
  81. /**
  82. * 启用 禁用
  83. * @param array $data
  84. * @return bool
  85. */
  86. public function status(array $data)
  87. {
  88. $this->transaction(function () use ($data) {
  89. $this->save($data);
  90. });
  91. return true;
  92. }
  93. /**
  94. * 审核
  95. * @param array $data
  96. * @return bool
  97. */
  98. public function audit(array $data)
  99. {
  100. $this->transaction(function () use ($data) {
  101. $this->save($data);
  102. //写入行为记录
  103. $this->addAction($this->id,$data);
  104. if($data['audit_status']==1){ //如果审核通过就创建一个活动统计记录
  105. if(CouponActivityStatisticsModel::where('coupon_activity_id',$this->id)->count()<1){
  106. CouponActivityStatisticsModel::create(['coupon_activity_id'=>$this->id]);
  107. }
  108. }
  109. });
  110. return true;
  111. }
  112. /**
  113. * 修改记录
  114. * @param array $data
  115. * @return bool
  116. */
  117. public function addOne(array $data)
  118. {
  119. $this->transaction(function () use ($data) {
  120. $this->save($data);
  121. // 选择的优惠券存入
  122. $couponActivityCouponModel = new CouponActivityCouponModel();
  123. $couponActivityCouponModel->add($this->id, $data['shareList']??[],$data['beSharedList']??[]);
  124. //写入行为记录
  125. //$data['audit_status'] = 0;
  126. $this->addAction($this->id,$data);
  127. });
  128. return true;
  129. }
  130. /**
  131. * 新增记录
  132. * @param array $data
  133. * @return bool
  134. */
  135. public function updOne(array $data)
  136. {
  137. $this->transaction(function () use ($data) {
  138. $this->save($data);
  139. // 选择的优惠券存入
  140. $couponActivityCouponModel = new CouponActivityCouponModel();
  141. $couponActivityCouponModel->add($this->id, $data['shareList']??[],$data['beSharedList']??[]);
  142. //写入行为记录
  143. //$data['audit_status'] = 0;
  144. $this->addAction($this->id,$data);
  145. });
  146. return true;
  147. }
  148. //添加行为记录
  149. public function addAction($coupon_activity_id,$data){
  150. $behavior = '';
  151. switch ($data['audit_status']){
  152. case 0:$behavior = '提交审核'; break;
  153. case 1:$behavior = '同意并发布活动'; break;
  154. case 2:$behavior = '不同意'; break;
  155. }
  156. $refuse['coupon_activity_id'] = $coupon_activity_id;
  157. $refuse['audit_status'] = $data['audit_status'];
  158. $refuse['audit_reason'] = $data['audit_reason']??'';
  159. $refuse['behavior'] = $behavior;
  160. $refuse['audit_time'] = date("Y-m-d H:i:s",time());
  161. $refuse['audit_user'] = $data['audit_user'];
  162. $refuse['audit_admin_id'] = $data['audit_admin_id'];
  163. $refuseModel = new CouponActivityActionModel;
  164. $refuseModel->save($refuse);
  165. }
  166. /**
  167. * Notes:生成商品编号
  168. * 规则:随机9位数
  169. * Author: zhangs
  170. * DateTime: 2021/10/11 16:11
  171. * @return string
  172. */
  173. public static function makeCodeNo()
  174. {
  175. return substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 9);
  176. }
  177. }