// +---------------------------------------------------------------------- declare (strict_types = 1); namespace app\store\model\groupbuylb; use app\common\model\groupbuylb\GroupBuyLbHelp as GroupBuyLbHelpModel; use app\common\library\helper; use app\common\model\User as UserModel; /** * 拼团裂变参与模型 * Class Coupon * @package app\store\model */ class GroupBuyLbHelp extends GroupBuyLbHelpModel { protected $append = []; public function getPayTimeAttr($value, $data){ if ($data['pay_time']){ return date('Y-m-d H:i:s',$data['pay_time']); } return ''; } /** * 获取列表 * @param array $param 查询条件 * @param int $listRows 分页数量 * @return mixed * @throws \think\db\exception\DbException */ public function getAllList(array $param = [], int $listRows = 15) { // 检索查询条件 $filter = $this->getQueryFilter($param); // 执行查询 return $this->alias('h')->with([]) ->leftJoin('group_buy_lb_goods gg','gg.group_buy_lb_activity_id = h.group_buy_lb_activity_id') ->leftJoin("group_buy_lb_activity_join join",'join.id=h.join_id') ->where($filter)->where('h.pay_state','in',[0,1]) ->field('h.*,join.user_id as join_user_id,join.status,gg.goods_id,gg.goods_name,gg.goods_sku_no') ->order(['h.id'=>'desc']) ->paginate($listRows)->each(function (&$item){ $item['join_user_name'] = UserModel::where('user_id',$item['join_user_id'])->value('nick_name')??''; $item['help_user_name'] = UserModel::where('user_id',$item['user_id'])->value("nick_name")??''; }); } /** * 检索查询条件 * @param array $param * @return \think\db\BaseQuery */ private function getQueryFilter(array $param) { //获取条件 $params = $this->setQueryDefaultValue($param, [ ]); // 筛选条件 $filter = []; // 订单编号 !empty($params['order_no']) && $filter[] = ['order_no', 'like', "%{$params['order_no']}%"]; !empty($params['goods_name']) && $filter[] = ['gg.goods_name', 'like', "%{$params['goods_name']}%"]; !empty($params['goods_sku_no']) && $filter[] = ['gg.goods_sku_no', 'like', "%{$params['goods_sku_no']}%"]; //付款起止时间 if (!empty($params['betweenTime'])) { $times = between_date($params['betweenTime']); $filter[] = ['pay_time', '>=', strtotime($times['start_date'])]; $filter[] = ['pay_time', '<=', strtotime($times['end_date'])]; } //拼团状态 0 拼团中 1 拼团成功 2拼团失败 if(isset($params['status'])&&$params['status']>-1){ $filter[] = ['join.status','=',$params['status']]; } //是否退款 0 拼团失败要给用户退款 1 已退款 if(isset($params['finance_refund'])&&$params['finance_refund']>-1){ $filter[] = ['finance_refund','=',$params['finance_refund']]; } // 实例化新查询对象 return $filter; } /** * 活动参团人数 * @param $activityId */ public function sumActSaleVolume($activityId){ $m = self::where('group_buy_lb_activity_id',$activityId) ->where('pay_state',1) ->field('sum(rice_card_money+pay_money) as sale_v') ->find(); return $m?$m->sale_v:'0.00'; } public static function sumActGoodsNum($activityId){ return self::where('group_buy_lb_activity_id',$activityId)->where('pay_state',1) ->where('order_id','>=',0)->sum('goods_num'); } public function getList($joinId){ return self::where('join_id',$joinId)->where('order_id','>=',0) ->where('pay_state',1) ->where('has_canceled',0)//todo是否也需要过滤 ->field('user_id,order_no,order_id,pay_time')->select(); } public function getFailedGroupList($joinId){ return self::alias('hp')->leftJoin('user us','hp.user_id=us.user_id') ->where('join_id',$joinId) ->where('has_canceled',0) ->where('pay_state','in',[0,1]) ->field('us.nick_name,hp.order_no,hp.order_id,hp.pay_time,hp.pay_money,hp.rice_card_money,hp.finance_refund,hp.pay_state,hp.id as help_id,hp.is_virtual_join_user,hp.fans') ->select(); } /** * 活动参团人数 * @param $activityId * @return int */ public function sumActHelpCount($activityId){ return self::where('group_buy_lb_activity_id',$activityId) ->where('pay_state',1) ->where('order_id','>=',0)->count('id'); } }