alias('a')->join('yy_gift b', 'a.gid = b.gid'); $model = $model->where($map); $list = $model->field('a.num,b.gid,b.gift_name,b.base_image,b.gift_price,b.sort')->order('b.sort desc')->select(); foreach ($list as $k => &$v) { $v['base_image'] = localpath_to_netpath($v['base_image']); } return ['code' => 200, 'msg' => '获取成功', 'data' => $list]; } //num 可以为负数 减少对应背包礼物 public function change_user_gift_pack($uid, $gid, $num = 0, $type, $remarks = '') { $TypeLable = model('admin/UserGiftPackLog')->TypeLable(); if (!in_array($type, array_keys($TypeLable))) { return ['code' => 201, 'msg' => 'type参数非法', 'data' => null]; } Db::startTrans(); try { if ($num != 0) { $map = []; $map[] = ['uid', '=', $uid]; $map[] = ['gid', '=', $gid]; $user_gift_pack_info = db::name('user_gift_pack')->where($map)->find(); $map = []; $map[] = ['uid', '=', $uid]; $is_tester = db::name('user')->cache(10)->where($map)->value('is_tester'); if (empty($user_gift_pack_info)) { $data = []; $data['uid'] = $uid; $data['gid'] = $gid; $data['total_num'] = $num; $data['num'] = $num; $data['is_tester'] = $is_tester; $data['add_time'] = time(); $data['update_time'] = time(); $reslut = db::name('user_gift_pack')->insert($data); if (!$reslut) { Db::rollback(); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } } else { if ($num > 0) { $map = []; $map[] = ['pid', '=', $user_gift_pack_info['pid']]; $reslut = db::name('user_gift_pack')->where($map)->inc('total_num', $num)->inc('num', $num)->update(['update_time' => time()]); if (!$reslut) { Db::rollback(); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } } elseif ($num < 0) { if (-$num > $user_gift_pack_info['num']) { Db::rollback(); return ['code' => 201, 'msg' => '礼物数量不足', 'data' => null]; } $map = []; $map[] = ['pid', '=', $user_gift_pack_info['pid']]; $map[] = ['num', '>=', -$num]; $reslut = db::name('user_gift_pack')->where($map)->inc('num', $num)->update(); if (!$reslut) { Db::rollback(); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } } else { Db::rollback(); return ['code' => 201, 'msg' => '无效礼物数量', 'data' => null]; } } //写入背包日志 $data = []; $data['uid'] = $uid; $data['type'] = $type; $data['gid'] = $gid; $data['change_num'] = $num; $data['after_num'] = $user_gift_pack_info['num'] + $num; $data['is_tester'] = $is_tester; $data['remarks'] = $remarks; $data['add_time'] = time(); $data['update_time'] = time(); $reslut = db::name('user_gift_pack_log')->insert($data); if (!$reslut) { Db::rollback(); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } else { Db::commit(); return ['code' => 200, 'msg' => '修改成功', 'data' => null]; } } } catch (\Exception $e) { // 回滚事务 Db::rollback(); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } } }