123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- <?php
- namespace app\store\model\card;
- use app\common\model\card\UserRiceCard as UserRiceCardModel;
- /**
- * 我的米卡模型
- * @package app\common\model
- */
- class UserRiceCard extends UserRiceCardModel
- {
- public function getList(array $param = [])
- {
- // 检索查询条件
- $query = $this->getQueryFilter($param);
- $useStatus = $this->fetchUseStatusSql($param);
- // 查询列表数据
- $list = self::alias('card')
- ->leftJoin('user','card.user_id=user.user_id')
- ->leftJoin('rice_card_order','card.order_id=rice_card_order.id')
- ->leftJoin('user buyer','rice_card_order.user_id=buyer.user_id')
- ->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')
- ->where("card.is_delete", '=', 0)
- ->where("card.type", 'in', [2,4])
- ->where("card.user_id", '>', 0)
- ->whereRaw($useStatus)
- ->where($query)
- ->order(["card.id" => 'desc'])
- ->paginate(15)->toArray();
- //dd($list);
- $stat = self::alias('card')
- ->leftJoin('user','card.user_id=user.user_id')
- ->leftJoin('rice_card_order','card.order_id=rice_card_order.id')
- ->leftJoin('user buyer','rice_card_order.user_id=buyer.user_id')
- ->field('sum(card.face_value) as face_value,sum(card.balance) as balance')
- ->where("card.is_delete", '=', 0)
- ->where("card.type", '=', 2)
- ->where("card.user_id", '>', 0)
- ->whereRaw($useStatus)
- ->where($query)->find()->toArray();
- return ['list'=>$list,'stat'=>$stat];
- }
- /**
- * 设置检索查询条件
- * @param array $params
- * @return array
- */
- private function getQueryFilter(array $params): array
- {
- // 默认参数
- //$params = $this->setQueryDefaultValue($param);
- // 检索查询条件
- $filter = [];
- // 激活状态
- if (isset($params['activationState']) && in_array(intval($params['activationState']),[0,1])) {
- $filter[] = ['card.activation_state', '=', $params['activationState']];
- }
- // 持有人
- if (!empty($params['nickName'])) {
- $filter[] = ['user.nick_name', 'like', "%{$params['nickName']}%"];
- }
- // 持有人手机号
- if (!empty($params['mobile'])) {
- $filter[] = ['user.mobile', 'like', "%{$params['mobile']}%"];
- }
- // 是否转赠
- if (isset($params['gift']) && $params['gift'] != -1) {
- if ($params['gift'] == 0){
- $filter[] = ['card.parent_id', '=', 0];
- }else{
- $filter[] = ['card.parent_id', '>', 0];
- }
- }
- // 购买人
- if (!empty($params['buyerName'])) {
- $filter[] = ['buyer.nick_name', 'like', "%{$params['buyerName']}%"];
- }
- // 购买人手机号
- if (!empty($params['buyerMobile'])) {
- $filter[] = ['buyer.mobile', 'like', "%{$params['buyerMobile']}%"];
- }
- //激活时间
- if (isset($params['betweenTime']) && $params['betweenTime']){
- if (isset($params['betweenTime'][0]) && $params['betweenTime'][0] && isset($params['betweenTime'][1]) && $params['betweenTime'][1]){
- $times = between_date($params['betweenTime']);
- $filter[] = ['card.activation_time','between',[$times['start_date'],$times['end_date']]];
- }
- }
- //有效期
- if (!empty($params['betweenTime2'])) {
- if (isset($params['betweenTime2'][0]) && $params['betweenTime2'][0] && isset($params['betweenTime2'][1]) && $params['betweenTime2'][1]) {
- $times = between_date($params['betweenTime2']);
- $filter[] = ['card.expire_time', 'between', [$times['start_date'], $times['end_date']]];
- }
- }
- //兑换状态
- return $filter;
- }
- private function fetchUseStatusSql($params){
- $sql = ' 1=1 ';
- // 使用状态,1未使用:已激活但未开始消费的米卡,即交易数=0,2使用中:已激活且已开始消费的米卡,即交易数>0,3已用完:余额为0的米卡
- if (!empty($params['useStatus'])) {
- if ($params['useStatus'] == 1){
- $sql .= ' and card.activation_state=1 and card.face_value - card.balance=0';
- }
- if ($params['useStatus'] == 2){
- $sql .= ' and card.activation_state=1 and card.face_value - card.balance>0 and card.balance>0';
- }
- if ($params['useStatus'] == 3){
- $sql .= ' and card.activation_state=1 and card.balance=0';
- }
- }
- //yoshop_user_rice_delivery
- //是否已兑换商品
- if (isset($params['exchange']) && in_array($params['exchange'],[0,1])){
- if ($params['exchange'] == 0){
- $sql .= 'and (select count(id) from yoshop_user_rice_delivery where user_rice_card_id=card.id) = 0';
- }else{
- $sql .= 'and (select count(id) from yoshop_user_rice_delivery where user_rice_card_id=card.id) > 0';
- }
- }
- return $sql;
- }
- /**
- * @param $id
- * @param $type
- * @return bool
- */
- public function freezeCard($id,$type){
- if (in_array($type,[0,1])){
- if($type == 0){
- self::where('id',$id)->update(['frozen_state'=>$type,'effect_state'=>1]);
- }
- if($type == 1){
- self::where('id',$id)->update(['frozen_state'=>$type,'effect_state'=>2]);
- }
- }
- return true;
- }
- public function getListReal($param){
- $query = $this->getQueryFilter($param);
- $useStatus = $this->fetchUseStatusSql($param);
- // 查询列表数据
- return self::alias('card')
- ->leftJoin('user','card.user_id=user.user_id')
- ->leftJoin('rice_card_order','card.order_id=rice_card_order.id')
- ->leftJoin('user buyer','rice_card_order.user_id=buyer.user_id')
- ->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')
- ->where("card.is_delete", '=', 0)
- ->where("card.type", '=', 3)
- ->where("card.user_id", '>', 0)
- ->whereRaw($useStatus)
- ->where($query)
- ->order(["card.id" => 'desc'])
- ->paginate(15);
- }
-
- }
|