'系统赠送', self::GIFT_PACK_GET => '礼包获得', self::GIFT_SEND => '礼物赠送', self::SYSTEM_DEDUCTION => '系统扣除', self::GIFT_USE => '礼物使用', self::FIRST_CHARGE => '首充获得', self::DRAW_GIFT => '天降好礼获得', self::XLH_DRAW_GIFT_GET => '巡乐会抽奖所得' ]; } // 获取背包列表 public function get_gift_pack_list($uid) { $model = Db::name('vs_user_gift_pack')->alias('a')->join('fa_vs_gift b', 'a.gid = b.gid'); $model = $model->where(['a.user_id'=>$uid,'a.is_use_give'=>1,'a.num'=>['>',0]]); $list = $model->field('a.num,b.gid,b.gift_name,b.base_image,b.gift_price,b.sort')->order('b.sort desc')->select(); $return_data = []; foreach ($list as $k => $v) { $return_data[$k]['gift_id'] = $v['gid']; $return_data[$k]['gift_name'] = $v['gift_name']; $return_data[$k]['base_image'] = $v['base_image']; $return_data[$k]['gift_price'] = $v['gift_price']; $return_data[$k]['num'] = $v['num']; } return ['code' => 1, 'msg' => '获取成功', 'data' => $return_data]; } //现有背包礼物总值 public function get_gift_pack_list_count($uid) { $list = Db::name('vs_user_gift_pack')->alias('a') ->join('fa_vs_gift b', 'a.gid = b.gid') ->where(['a.user_id'=>$uid,'a.is_use_give'=>1,'a.num'=>['>',0]]) ->field('a.num,b.gift_price') ->select(); $data = 0; foreach ($list as $v) { $data += $v['num'] * $v['gift_price']; } $count['count'] = $data; return ['code' => 1, 'msg' => '获取成功', 'data' =>$count ]; } //背包收入 public function income_user_gift_pack($uid,$page=1,$page_limit=10) { $type = [ self::SYSTEM_ADJUSTMENT, self::GIFT_PACK_GET, // self::GIFT_SEND, self::FIRST_CHARGE, self::DRAW_GIFT, self::XLH_DRAW_GIFT_GET ]; //获取背包日志列表 $log_model = Db::name('vs_user_gift_pack_log')->where(['user_id'=>$uid])->whereIn('type', $type) ->order('createtime desc') ->page($page, $page_limit) ->select(); if (empty($log_model)) { return ['code' => 0, 'msg' => ' ', 'data' => null]; } $list = []; foreach ($log_model as $k => $v){ $gift_info = db::name('vs_gift')->where(['gid'=>$v['gid']])->find(); $list[$k]['remarks'] = $v['remarks']; $list[$k]['gift_num'] = $v['change_num']; $list[$k]['gift_name'] = "X".$v['change_num'].$gift_info['gift_name']; $list[$k]['gift_image'] = $gift_info['play_image']; $list[$k]['time'] = date('Y-m-d H:i:s', $v['createtime']); } return ['code' => 1, 'msg' => '获取成功', 'data' => $list]; } //背包礼物支出列表 public function get_gift_pack_outcome($uid, $page = 1, $page_limit = 10) { $type = [ self::SYSTEM_DEDUCTION, self::GIFT_USE, self::GIFT_SEND ]; $log_model = Db::name('vs_user_gift_pack_log')->where(['user_id'=>$uid])->whereIn('type', $type) ->order('createtime desc') ->page($page, $page_limit) ->select(); if (empty($log_model)) { return ['code' => 0, 'msg' => ' ', 'data' => null]; } $list = []; foreach ($log_model as $k => $v){ $gift_info = db::name('vs_gift')->where(['gid'=>$v['gid']])->find(); $list[$k]['remarks'] = $v['remarks']; $list[$k]['gift_num'] = $v['change_num']; $list[$k]['gift_name'] = "-".$v['change_num'].$gift_info['gift_name']; $list[$k]['gift_image'] = $gift_info['play_image']; $list[$k]['time'] = date('Y-m-d H:i:s', $v['createtime']); } return ['code' => 1, 'msg' => '获取成功', 'data' => $list]; } //背包变更 public function change_user_gift_pack($uid, $gid, $num,$type, $remarks = '') { $TypeLable = $this->TypeLable(); if (!in_array($type, array_keys($TypeLable))) { return ['code' => 0, 'msg' => 'type参数非法', 'data' => null]; } if(empty($remarks)){ $remarks = $TypeLable[$type]; } Db::startTrans(); try { $user_gift_pack_info = db::name('vs_user_gift_pack')->where(['user_id' => $uid, 'gid' => $gid])->find(); if (empty($user_gift_pack_info) && $num > 0) { $data = []; $data['user_id'] = $uid; $data['gid'] = $gid; $data['total_num'] = $num; $data['num'] = $num; $data['createtime'] = time(); $data['updatetime'] = time(); $reslut = db::name('vs_user_gift_pack')->insert($data); if (!$reslut) { Db::rollback(); return ['code' => 0, 'msg' => '请重试', 'data' => null]; } } else { if ($num > 0) { $reslut = db::name('vs_user_gift_pack')->where('pid', '=', $user_gift_pack_info['pid'])->setInc('total_num', $num); if (!$reslut) { Db::rollback(); return ['code' => 0, 'msg' => '请重试', 'data' => null]; } $reslut = db::name('vs_user_gift_pack')->where('pid', '=', $user_gift_pack_info['pid'])->setInc('num', $num); if (!$reslut) { Db::rollback(); return ['code' => 0, 'msg' => '请重试', 'data' => null]; } } elseif ($num < 0) { if(empty($user_gift_pack_info) || $user_gift_pack_info['num'] < abs($num)){ return ['code' => 0, 'msg' => '礼物数量不足', 'data' => null]; } $map = []; $map = [ 'pid'=>$user_gift_pack_info['pid'], 'num'=>['>=', abs($num)] ]; $reslut = db::name('vs_user_gift_pack')->where($map)->setInc('num', $num); if (!$reslut) { Db::rollback(); return ['code' => 0, 'msg' => '请重试', 'data' => null]; } } else { Db::rollback(); return ['code' => 0, 'msg' => '无效礼物数量', 'data' => null]; } } //写入背包日志 $log_data = []; $log_data['user_id'] = $uid; $log_data['gid'] = $gid; $log_data['type'] = $type; $log_data['change_num'] = $num; if (empty($user_gift_pack_info)){ $log_data['after_num'] = $num; }else { $log_data['after_num'] = $user_gift_pack_info['num'] + $num; } $log_data['remarks'] = $remarks; $log_data['createtime'] = time(); $log_data['updatetime'] = time(); $log_reslut = db::name('vs_user_gift_pack_log')->insert($log_data); if (!$log_reslut) { Db::rollback(); return ['code' => 0, 'msg' => '请重试', 'data' => null]; } else { Db::commit(); return ['code' => 1, 'msg' => '修改成功', 'data' => null]; } } catch (\Exception $e) { // 回滚事务 Db::rollback(); return ['code' => 0, 'msg' => $e->getMessage(), 'data' => null]; } } }