UserRiceCard.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <?php
  2. namespace app\store\model\card;
  3. use app\common\model\card\UserRiceCard as UserRiceCardModel;
  4. /**
  5. * 我的米卡模型
  6. * @package app\common\model
  7. */
  8. class UserRiceCard extends UserRiceCardModel
  9. {
  10. public function getList(array $param = [])
  11. {
  12. // 检索查询条件
  13. $query = $this->getQueryFilter($param);
  14. $useStatus = $this->fetchUseStatusSql($param);
  15. // 查询列表数据
  16. $list = self::alias('card')
  17. ->leftJoin('user','card.user_id=user.user_id')
  18. ->leftJoin('rice_card_order','card.order_id=rice_card_order.id')
  19. ->leftJoin('user buyer','rice_card_order.user_id=buyer.user_id')
  20. ->field('card.id,card.card_name,card.user_id,card.card_id,card.activation_state,card.effect_state,card.activation_time,card.face_value,card.balance,card.parent_id,card.frozen_state,user.nick_name,user.mobile,buyer.nick_name as buyer_name,buyer.mobile as buyer_mobile')
  21. ->where("card.is_delete", '=', 0)
  22. ->where("card.type", 'in', [2,4])
  23. ->where("card.user_id", '>', 0)
  24. ->whereRaw($useStatus)
  25. ->where($query)
  26. ->order(["card.id" => 'desc'])
  27. ->paginate(15)->toArray();
  28. //dd($list);
  29. $stat = self::alias('card')
  30. ->leftJoin('user','card.user_id=user.user_id')
  31. ->leftJoin('rice_card_order','card.order_id=rice_card_order.id')
  32. ->leftJoin('user buyer','rice_card_order.user_id=buyer.user_id')
  33. ->field('sum(card.face_value) as face_value,sum(card.balance) as balance')
  34. ->where("card.is_delete", '=', 0)
  35. ->where("card.type", '=', 2)
  36. ->where("card.user_id", '>', 0)
  37. ->whereRaw($useStatus)
  38. ->where($query)->find()->toArray();
  39. return ['list'=>$list,'stat'=>$stat];
  40. }
  41. /**
  42. * 设置检索查询条件
  43. * @param array $params
  44. * @return array
  45. */
  46. private function getQueryFilter(array $params): array
  47. {
  48. // 默认参数
  49. //$params = $this->setQueryDefaultValue($param);
  50. // 检索查询条件
  51. $filter = [];
  52. // 激活状态
  53. if (isset($params['activationState']) && in_array(intval($params['activationState']),[0,1])) {
  54. $filter[] = ['card.activation_state', '=', $params['activationState']];
  55. }
  56. // 持有人
  57. if (!empty($params['nickName'])) {
  58. $filter[] = ['user.nick_name', 'like', "%{$params['nickName']}%"];
  59. }
  60. // 持有人手机号
  61. if (!empty($params['mobile'])) {
  62. $filter[] = ['user.mobile', 'like', "%{$params['mobile']}%"];
  63. }
  64. // 是否转赠
  65. if (isset($params['gift']) && $params['gift'] != -1) {
  66. if ($params['gift'] == 0){
  67. $filter[] = ['card.parent_id', '=', 0];
  68. }else{
  69. $filter[] = ['card.parent_id', '>', 0];
  70. }
  71. }
  72. // 购买人
  73. if (!empty($params['buyerName'])) {
  74. $filter[] = ['buyer.nick_name', 'like', "%{$params['buyerName']}%"];
  75. }
  76. // 购买人手机号
  77. if (!empty($params['buyerMobile'])) {
  78. $filter[] = ['buyer.mobile', 'like', "%{$params['buyerMobile']}%"];
  79. }
  80. //激活时间
  81. if (isset($params['betweenTime']) && $params['betweenTime']){
  82. if (isset($params['betweenTime'][0]) && $params['betweenTime'][0] && isset($params['betweenTime'][1]) && $params['betweenTime'][1]){
  83. $times = between_date($params['betweenTime']);
  84. $filter[] = ['card.activation_time','between',[$times['start_date'],$times['end_date']]];
  85. }
  86. }
  87. //有效期
  88. if (!empty($params['betweenTime2'])) {
  89. if (isset($params['betweenTime2'][0]) && $params['betweenTime2'][0] && isset($params['betweenTime2'][1]) && $params['betweenTime2'][1]) {
  90. $times = between_date($params['betweenTime2']);
  91. $filter[] = ['card.expire_time', 'between', [$times['start_date'], $times['end_date']]];
  92. }
  93. }
  94. //兑换状态
  95. return $filter;
  96. }
  97. private function fetchUseStatusSql($params){
  98. $sql = ' 1=1 ';
  99. // 使用状态,1未使用:已激活但未开始消费的米卡,即交易数=0,2使用中:已激活且已开始消费的米卡,即交易数>0,3已用完:余额为0的米卡
  100. if (!empty($params['useStatus'])) {
  101. if ($params['useStatus'] == 1){
  102. $sql .= ' and card.activation_state=1 and card.face_value - card.balance=0';
  103. }
  104. if ($params['useStatus'] == 2){
  105. $sql .= ' and card.activation_state=1 and card.face_value - card.balance>0 and card.balance>0';
  106. }
  107. if ($params['useStatus'] == 3){
  108. $sql .= ' and card.activation_state=1 and card.balance=0';
  109. }
  110. }
  111. //yoshop_user_rice_delivery
  112. //是否已兑换商品
  113. if (isset($params['exchange']) && in_array($params['exchange'],[0,1])){
  114. if ($params['exchange'] == 0){
  115. $sql .= 'and (select count(id) from yoshop_user_rice_delivery where user_rice_card_id=card.id) = 0';
  116. }else{
  117. $sql .= 'and (select count(id) from yoshop_user_rice_delivery where user_rice_card_id=card.id) > 0';
  118. }
  119. }
  120. return $sql;
  121. }
  122. /**
  123. * @param $id
  124. * @param $type
  125. * @return bool
  126. */
  127. public function freezeCard($id,$type){
  128. if (in_array($type,[0,1])){
  129. if($type == 0){
  130. self::where('id',$id)->update(['frozen_state'=>$type,'effect_state'=>1]);
  131. }
  132. if($type == 1){
  133. self::where('id',$id)->update(['frozen_state'=>$type,'effect_state'=>2]);
  134. }
  135. }
  136. return true;
  137. }
  138. public function getListReal($param){
  139. $query = $this->getQueryFilter($param);
  140. $useStatus = $this->fetchUseStatusSql($param);
  141. // 查询列表数据
  142. return self::alias('card')
  143. ->leftJoin('user','card.user_id=user.user_id')
  144. ->leftJoin('rice_card_order','card.order_id=rice_card_order.id')
  145. ->leftJoin('user buyer','rice_card_order.user_id=buyer.user_id')
  146. ->field('card.id,card.card_name,card.user_id,card.card_id,card.activation_state,card.effect_state,card.activation_time,if(card.expire_time="2047-07-01 23:59:59","永久有效",card.expire_time) as expire_time,card.parent_id,card.frozen_state,user.nick_name,user.mobile,buyer.nick_name as buyer_name,buyer.mobile as buyer_mobile,(select count(id) from yoshop_user_rice_delivery where user_rice_card_id=card.id) as goods_count')
  147. ->where("card.is_delete", '=', 0)
  148. ->where("card.type", '=', 3)
  149. ->where("card.user_id", '>', 0)
  150. ->whereRaw($useStatus)
  151. ->where($query)
  152. ->order(["card.id" => 'desc'])
  153. ->paginate(15);
  154. }
  155. }